ПредишенСледващото

Един извади ми пука ми харесва да Matlabe 6.5. Потеше над прог 6-7 месеца, той се е превърнал почти всичко, което той искаше, поръсва се с винт и всички загубени. Но напуснах много импресии, че мога да споделя.

1. Независим приложение написах в Делфи, защото тя е по-добре да работят в нея. Но съжалявам, аз не знам C ++, както и Matlab ясно фокусирана върху него и да се съберат всички функции чрез кода на C.

2. Най-лесният начин да се съберат необходимите функции в matlabovskie DLL, който след това се свързва с обвивка, направена в човешки Delphi, например.

4. Когато преместите програмата на друг компютър, не трябва да се скъпя за дисково пространство. Прехвърлете цялото matlabovskie DLL-ки намерите това, което (в моя случай това е около 80 MB). Ако поне малко, че не се намери функция - сваля без предупреждение в най-неочакван момент.

Е, това е най-вероятно всички. Аз ще добавя само, че глупости не е слаб. Макар че може да седмо различно.
На добър час.

вътрешен компилатор съставянето MatLab

скъпа,
моля да ми кажете стъпка по стъпка как да се направи DLL-ку на м-файл в MatLab-е

Аз със сигурност се adding.dll файл
това е просто като го нарече след серия

а = добавяне (В, С), където В и С са разбира вече определя получа
съобщение
---------------------------------------------------------------
Mex влизане файл точка липсва. Моля, проверете (с малки букви)
правопис на mexFunction (за C MEX-файлове) или (нечувствително)
правопис на MEXFUNCTION (за FORTRAN MEX-файлове).
. Невалиден MEX-файл "C: \ my_doc \ MATLAB \ adding.dll": Посоченият модул не може да бъде намерен.
---------------------------------------------------------------

където бръкна кучето?
може да не е нещо, така че аз правя. кажи ми?

начина, по който още един въпрос dogonku.
ако аз функция в matbale събира и да го запишете като DLL-ку, че ще работи по-бързо?

ако аз функция в matbale събира и да го запишете като DLL-ку, че ще работи по-бързо?


По отношение на всички предишни Аз няма да кажа - просто е DLL-ки, аз съм обикновено подредени код и това е така, но това е за четене на скоростта някъде (може би някъде в помощ-д), че, да, можете да получите значително ускорение в работа, особено ако събрани функции съдържат много цикли.

Ами, просто кажете на скоростта трябва да се увеличи нуждата да се направи точно DLL-ку.
Бърз!

Ами, просто кажете на скоростта трябва да се увеличи нуждата да се направи точно DLL-ку.


Проблеми със скоростта? - С вградени функции, EIG () тип не печелите в скоростта. Основните причини за забавянето на работата в MATLAB, че срещнах:
1) динамична промяна на дължината на масива - могат да бъдат преодолени, ако знаете крайната дължина на масива: едва сега започва да се инициализира размер на масива, който искате, например, с помощта на нули () или такива ()
2) изготвяне на сложни графики в голям брой - но след това е малко вероятно да ви помогне да създаване DLL
3) циклите на изобилието - се опитват да използват работата с масиви вместо цикъла, когато е възможно

Ако компетентно за изграждане на кода, а след това) може да падне спешна нужда от допълнително ускорение; б) създаване на DLL няма да даде този смисъл.

с първите две - няма проблем.
Променливи са създадени по-рано, и техният размер не е menyat в процеса.
но с това.

цикли на изобилието - се опитват да използват работата с масиви вместо цикъла, когато е възможно


някак си, докато srostaetsya

за к = 1: Z;
sh_x = vect (1) * к-1;
sh_y = vect (2) * к-1;
I = CEIL (shift_x-sh_x);
J = CEIL (shift_y-sh_y);
ди = абсолютен (i- (shift_x-sh_x));
DJ = абсолютен (J- (shift_y-sh_y));
[XI, YI] = meshgrid (1 + ди: 1: размер (data1,1), 1 + DJ: 1: размер (data1,2));
[Si, SJ] = размер (XI);
ZI = interp2 (X, Y, данни1 (20), XI, YI.);

int_data (I: I + SI-1, й: J + SJ-1) = int_data (I: I + SI-1, й: J + SJ-1) + двойно (ЗИ);

работи три пъти по-бавно код

============================================
данни1 = двоен (данни 1);
за к = 1: Z;
sh_x = vect (1) * к;
sh_y = vect (2) * к;
за I = 1: размер (int_data, 1);
II = I + sh_x-shift_x;
ако (II> = 2 II<=x-1);
IIR = кръг (I + sh_x-shift_x);
IIF = етаж (I + sh_x-shift_x);
IIC = CEIL (I + sh_x-shift_x);
за к = 1: размер (int_data, 2);
JJ = J + sh_y-shift_y;
ако (JJ> = 2 JJ<=y-1);
jjr = кръг (к + sh_y-shift_y);
jjf = етаж (к + sh_y-shift_y);
JJC = CEIL (к + sh_y-shift_y);

ad_x1y1 = данни1 (Ilf, jjf, к);
ad_x1y2 = данни1 (Ilf, JJC, к);
ad_x2y1 = данни1 (IIC, jjf, к);
ad_x2y2 = данни1 (IIC, JJC, к);
ad_y1 = ad_x1y1 + (II-Ilf) * (ad_x1y2-ad_x1y1);
ad_y2 = ad_x2y1 + (II-Ilf) * (ad_x2y2-ad_x2y1);

int_data (I, J) = int_data (I, J) + реклама;
% Int_data (I, 1 + CEIL (shift_y-sh_y) :( CEIL (shift_y-sh_y) + размер (реклама, 2))) = int_data (I, 1 + CEIL (shift_y-sh_y) :( CEIL (shift_y-sh_y ) + размер (реклама, 2))) + двойно (AD);
край
край
край
край
% [Num2str (к), "цикли от, num2str (Z), се извършва ']
край
=======================

въпреки че първата използва само един цикъл и две стандартни функции
и втората наредба се взриви твърде много и използва за това, че на 3 вложени цикъла.

където бръкна кучето?

Подкрепете проекта - споделете линка, благодаря!