Satura rādītājs:

Matlab MEX faila izveide: 3 soļi
Matlab MEX faila izveide: 3 soļi

Video: Matlab MEX faila izveide: 3 soļi

Video: Matlab MEX faila izveide: 3 soļi
Video: Matlab для электронщика - Урок 6 - Использование C / C++ кода, MEX файлы 2024, Jūlijs
Anonim
Matlab MEX faila izveide
Matlab MEX faila izveide

Instrukcijas, kā integrēt apkopoto C kodu ar Matlab. MEX apzīmē MATLAB Executable. MEX faili ir dinamiski saistītas apakšprogrammas, kas ražotas no C vai Fortran avota koda un kuras, apkopojot, var palaist no MATLAB, tāpat kā MATLAB M-faili vai iebūvētās funkcijas. Ārējās saskarnes funkcijas nodrošina funkcionalitāti datu pārsūtīšanai starp MEX failiem un MATLAB, kā arī iespēju izsaukt MATLAB funkcijas no C vai Fortran koda. Šeit es jums parādīšu visu, kas nepieciešams, lai ātri izveidotu noderīgu mex failu. Nepieciešams: = teksta redaktors = matlab 6.1 vai jaunāks (iepriekšējās versijās var veikt arī mex failus, bet nedaudz atšķirīgs formāts)

1. darbība: kods

Kods
Kods

lejupielādējiet pievienoto failu: mextest1p0.cpp

cpp apzīmē c ++ ……… To dara kods: ……… tas paņem skaitli, kuru jūs nosūtāt no komandrindas matlab. Tas matlabā izdrukā “sveika pasaule”, atgriež matlabam divus argumentus, divu elementu skaitļu masīvu un virkni. Atgrieztā skaitļu masīva pirmais elements ir 1 + numurs, kuru jūs tam nosūtījāt, otrais atgriezto skaitļu masīva elements ir 2 + numurs, kuru jūs to nosūtījāt ………. Šādā veidā to īstenojiet: ………… saglabājiet failu savā datorā. startējiet matlab, pārejiet matlab uz direktoriju, kurā atrodas fails, pēc tam izpildiet apkopošanas un izpildes norādījumus lapas augšpusē.cpp failu. Es nevaru rakstīt šos norādījumus šeit, jo instrukcijas automātiski rediģē komandas un liek tām parādīties nepareizi. Tālāk redzamajā attēlā var redzēt, kā kods darbojas. Neuztraucieties par "komandrindas brīdinājumu", šķiet, ka tas neko neietekmē. Paziņojums kreisajā pusē, pašreizējā direktorijā ir.cpp fails. Labajā pusē var redzēt, kā es apkopoju kodu un pēc tam izpildu to no matlab. Izlasiet failu savā teksta redaktorā (piemēram, piezīmju grāmatiņu logos), tas ir ļoti labi dokumentēts un pats par sevi saprotams, jūs varēsit izdarīt gandrīz visu nepieciešamo, ievērojot koda noteikumus (ti, kopējot un ielīmējot to un nelielas izmaiņas) #################### ################ ######################## …….. PIEZĪME …….. dažu kaitinošas automātiskās rediģēšanas dēļ, ko veic norādījumi, kods, kas redzams uz nākamā lapa NEDARBOS, jums ir jālejupielādē pievienotais fails, nevis jākopē un jāielīmē. ################################################# ######################

2. darbība. Šis ir kods, NEKOPĒJIET UN IELĪPĒT

Šis ir kodekss, NEKOPĒJIET UN IELĪPOJIET
Šis ir kodekss, NEKOPĒJIET UN IELĪPOJIET

################################################ ################## ….. DARBS, jums ir LEJUPIELĀDĒT pievienoto failu, nevis kopēt un ielīmēt. ############################# ########################################> tas ir kods matlab mex failam // kods uzņems vienu skaitļa vērtību un izvadīs divas skaitļu vērtības // divi izvades skaitļi tiek aprēķināti no ievades numura // kods arī izvadīs virknes vērtību // kods arī izdrukāt "labdien pasaule" #include "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## ############################## #################### AM b … EI-drukājiet "sveika pasaule"-### ######### // ###################################### ### mexPrintf ("Sveika pasaule"); // #################################### ##### // ########-Get Stuff From Matlab-########################## ########################## * deklarēt masīva mainīgo, lai turētu ienākošos vales*/double* InValues;/* iegūt vērtības, kas nosūtītas no matlab*/InValues = mxGetPr (prhs [0]);/* lai izmantotu šīs vērtības, kas tika nosūtītas no matlab, veiciet InValues [0], InValue [1], utt. Atkarībā no tā, cik daudz vērtību ir. InValues tiks izmantotas zemāk: */// ############################### ## // ########-Atgriež skaitļu masīvu-######### // ################### #######################/ * deklarējiet masīvu, kas tiks nosūtīts uz matlab (* padara to par masīvu) */double * OutValues;/ * Izveidojiet/piešķiriet atgriešanās argumentu, 1x2 (1 rindas 2 kolonna) matrica atgriešanas masīva pirmajai slotā (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Iegūstiet rādītāju uz atgriešanās argumentu */OutValues = mxGetPr (plhs [0]); / * piešķirt vērtības OutValues, kas atradīsies atgriešanas masīva pirmajā slotā, šeit mēs izmantojam InValues, lai datorizētu OutValues */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ########################################### ###########-Atgrieziet virkni-############# // ################# ###########################/* deklarējiet virknes mainīgo, kas jānosūta uz matlab*/char* str;/*, piešķiriet vērtību string */str = "byebye";/ *ievietojiet virkni atgriešanas masīvu otrajā slotā (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ###########################################-atgriešanās vēl sīkumi-############# ################################ ############/ *, lai atgrieztu vairāk preču, ievērojiet iepriekš minētos vispārīgos noteikumus, bet ievietojiet to citos plhs slotos, plhs [somenumber] */}

3. darbība. Ja kāda iemesla dēļ tas netiek apkopots

Ja kāda iemesla dēļ tas netiek apkopots
Ja kāda iemesla dēļ tas netiek apkopots

Ja kāda iemesla dēļ tas netiek apkopots (tam vajadzētu, manā datorā tas darbojas labi), redziet šos resursus, no tiem es mācījos. Viņiem ir nelieli traucējumi (izmantojot kādu vecu, nefunkcionējošu gramatiku utt.), Bet, ja jūs pārvietojaties uz priekšu un atpakaļ starp abiem, jums vajadzētu būt iespējai apvienot kaut ko, kas darbojas. Http://web.ccr.jussieu.fr/ccr/ Dokumentācija/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Ieteicams: