Összeállítása belső fordító matlab szoftver okolonauchnom

Egy húzta a rohadt szeretek Matlabe 6.5. Izzadt felett prog 6-7 hónap, kiderült szinte minden akart, meghintjük csavar és minden elveszett. De maradt egy csomó benyomások, hogy tudok megosztani.

1. Független app írtam Delphi, mert jobb dolgozni benne. De sajnálom, nem tudom, C ++, valamint Matlab jól összpontosított, és összeállítja az összes funkciót a C kódot.

2. A legegyszerűbb módja, hogy összeállítja a szükséges funkciókat matlabovskie DLL, amit aztán csatlakozik a hüvely készült emberileg Delphi, például.

4. Ha mozgatja a programot egy másik számítógépre, akkor nem fukarkodik a lemezterület. Át minden matlabovskie DLL-ki megtalálja, amit (az én esetemben ez az arány körülbelül 80 MB). Ha legalább néhány nem találja funkció - leveszi figyelmeztetés nélkül a legváratlanabb pillanatban.

Nos, ez valószínűleg az összes. Azt kell csak hozzá, hogy szar nem gyenge. Bár lehet, hogy egy hetedik más.
Sok szerencsét.

belső fordító összeállítása MatLab

kedves,
Kérem, mondja meg, lépésről lépésre, hogyan kell egy dll-ku az m-fájlt a MatLab-e

Azt biztos, hogy adding.dll fájl
ez csak hív, amely után a húr

a = hozzáadásával (b, c) ha a b és c természetesen már meghatározott kapok
üzenet
---------------------------------------------------------------
Mex fájl belépési pont hiányzik. Kérjük, ellenőrizze a (kis- és nagybetűket)
helyesírás mexFunction (C MEX-fájlok), vagy a (eset-érzékeny)
helyesírás MEXFUNCTION (a FORTRAN MEX-fájlok).
. Érvénytelen MEX-file 'C: \ my_doc \ matlab \ adding.dll': A megadott modul nem található.
---------------------------------------------------------------

ahol a kutya matatott?
lehet valami nem úgy mint én. elmondani?

az út még egy kérdés dogonku.
ha én egy funkciót matbale összeállításához és mentse el egy dll-ku fog ez működni a gyorsabb?

ha én egy funkciót matbale összeállításához és mentse el egy dll-ku fog ez működni a gyorsabb?


Ami a korábbi nem fogom mondani - csak nem dll-ki, én általában rendezett kódot, és így, de ez a sebesség olvasás valahol (talán valahol a help-e), hogy igen, akkor kap egy jelentős gyorsulás működni, különösen, ha össze funkciókat tartalmaznak sok cikluson keresztül.

Nos, csak mondd sebesség növelni kell annak szükségességét, hogy nem pontosan dll-ku.
Kérdezzen!

Nos, csak mondd sebesség növelni kell annak szükségességét, hogy nem pontosan dll-ku.


Problémák a sebességet? - A beépített funkciók, eig () típusú nem tudja kihasználni a sebességet. A fő oka a lassuló munka MATLAB hogy én találkoztam:
1) dinamikus változását hossza a tömb - lehet legyőzni, ha tudod, hogy a végső hossza a tömb: csak a kezdet elindítani a tömb kívánt méretet, például a nullát () vagy azok ()
2) rajz komplex grafikonok nagy számban -, de akkor teremtés dll nem valószínű, hogy segítsen
3) A bőség ciklusok - próbáljon meg a munkát tömbök helyett ciklusok, ahol lehetséges

Ha hozzáértő építeni a kódot, akkor a) leeshet sürgős szükség további gyorsulás; b) létrehozása dll nem ad ilyen értelemben.

Az első két - nem probléma.
A változók előre létrehozott, és azok mérete nem menyat a folyamatban.
de ezzel.

ciklusban a bőség - próbáljon meg a munkát tömbök helyett ciklusok, ahol lehetséges


valahogy, amíg srostaetsya

k = 1: z;
sh_x = VECT (1) * k-1;
sh_y = VECT (2) * k-1;
i = ceil (shift_x-sh_x);
J = ceil (shift_y-sh_y);
di = ABS (i- (shift_x-sh_x));
dj = abs (j- (shift_y-sh_y));
[Xi, yi] = meshgrid (1 + di: 1: mérete (data1,1), 1 + dj: 1: méret (data1,2));
[Si, sj] = mérete (XI);
ZI = interp2 (X, Y, adat1 (20), XI, Yl.);

int_data (i: i + Si-1, j: j + SJ-1) = int_data (i: i + Si-1, j: j + SJ-1) + dupla (ZI);

fut háromszor lassabb kódot

============================================
adat1 = kettős (data1);
k = 1: z;
sh_x = VECT (1) * K;
sh_y = VECT (2) * K;
i = 1: méret (int_data, 1);
ii = i + sh_x-shift_x;
ha (II> = 2 ii<=x-1);
IIR = round (i + sh_x-shift_x);
IIF = floor (i + sh_x-shift_x);
IIC = ceil (i + sh_x-shift_x);
j = 1: méret (int_data, 2);
jj = j + sh_y-shift_y;
ha (JJ> = 2 jj<=y-1);
jjr = round (j + sh_y-shift_y);
JJF = floor (j + sh_y-shift_y);
JJC = ceil (j + sh_y-shift_y);

ad_x1y1 = adat1 (IIF, JJF, k);
ad_x1y2 = adat1 (IIF, JJC, k);
ad_x2y1 = adat1 (IIC, JJF, k);
ad_x2y2 = adat1 (IIC, JJC, k);
ad_y1 = ad_x1y1 + (II-IIF) * (ad_x1y2-ad_x1y1);
ad_y2 = ad_x2y1 + (II-IIF) * (ad_x2y2-ad_x2y1);

int_data (i, j) = int_data (i, j) + ad;
% Int_data (i, 1 + ceil (shift_y-sh_y) :( ceil (shift_y-sh_y) + méretű (ad, 2))) = int_data (i, 1 + ceil (shift_y-sh_y) :( ceil (shift_y-sh_y ) + méret (ad, 2))) + kettős (aD);
vég
vég
vég
vég
% [Num2str (k), 'ciklus ki', num2str (z), 'történik']
vég
=======================

bár a korábbi felhasználások egyetlen ciklus és két standard függvények
és a második tömb nem robbant túl sokat, és használ, hogy a 3 ágyazott hurkok.

ahol a kutya matatott?