Kazalo:

Ustvarjanje datoteke Matlab MEX: 3 koraki
Ustvarjanje datoteke Matlab MEX: 3 koraki

Video: Ustvarjanje datoteke Matlab MEX: 3 koraki

Video: Ustvarjanje datoteke Matlab MEX: 3 koraki
Video: Crypto Pirates Daily News - February 18th, 2022 - Latest Cryptocurrency News Update 2024, November
Anonim
Ustvarjanje datoteke Matlab MEX
Ustvarjanje datoteke Matlab MEX

Navodila za integracijo prevedene kode C v Matlab. MEX pomeni MATLAB Executable. Datoteke MEX so dinamično povezane podprograme, proizvedene iz izvorne kode C ali Fortran, ki jih je po prevajanju mogoče zagnati znotraj MATLAB na enak način kot datoteke MATLAB M ali vgrajene funkcije. Funkcije zunanjega vmesnika omogočajo prenos podatkov med datotekami MEX in MATLAB ter možnost klicanja funkcij MATLAB iz kode C ali Fortran. Tukaj vam bom pokazal vse, kar potrebujete za hitro izdelavo uporabne datoteke mex. potrebujem: = urejevalnik besedil = matlab 6.1 ali novejši (starejše različice lahko naredijo tudi datoteke mex, vendar nekoliko drugačne oblike) = matlab ima svoj lastni prevajalnik c, ki je priložen, vendar sem uporabil vizualni prevajalnik c ++, ker sem ga imel.

1. korak: Koda

Kodeks
Kodeks

prenesite priloženo datoteko: mextest1p0.cpp

cpp pomeni c ++ ……… To počne koda: ……… potrebuje številko, ki jo pošljete iz ukaznega poziva matlab. Natisne "hello world" v matlab in vrne dva argumenta v matlab, matriko s števili dveh elementov in niz, prvi element vrnjene matrike številk je 1 + številka, ki ste jo poslali, drugi element vrnjene matrike številk je 2 + številko, ki ste jo poslali …………cpp datoteko. Teh navodil ne morem zapisati tukaj, ker instrukti samodejno urejajo ukaze in povzročijo, da so prikazani nepravilno. Na spodnji sliki lahko vidite, da koda deluje. Ne skrbite za "opozorilo ukazne vrstice", zdi se, da ne vpliva nič. Opomba na levi strani trenutni imenik vsebuje datoteko.cpp. Na desni strani me vidite, kako sestavljam kodo in jo nato izvajam iz matlaba. Preberite datoteko v urejevalniku besedil (na primer beležnico v oknih), je zelo dobro dokumentirana in samoumevna, lahko storite skoraj vse, kar potrebujete, tako da sledite konvencijam v kodi (tj. Kopirate in prilepite in naredite rahle spremembe) ############################################## ######################## …….. OPOMBA …….. zaradi nekaj nadležnega samodejnega urejanja, ki ga izvajajo navodila, koda, kot je prikazano na naslednja stran NE BO DELOVALA, MORATE PREKLOPITI DATOTEKO, ki sem jo priložil, namesto da to kopirate in prilepite. ################################################# ######################

2. korak: To je koda, NE KOPIRAJTE IN LEPITE

To je koda, NE KOPIRAJTE IN LEPITE
To je koda, NE KOPIRAJTE IN LEPITE

################################################# ##################### …….. OPOMBA …….. Zaradi nekaj nadležnega samodejnega urejanja, ki ga izvajajo navodila, koda, prikazana na tej strani, NE BO DELO, MORATE PREKLOPITI DATOTEKO, ki sem jo priložil, namesto da bi to kopirali in prilepili. ############################## ####################################### // To je v c ++ napisal leevonk // to je koda za datoteko melax matlab // koda bo vzela eno vrednost števila in izpisala dve številki // dve izhodni številki se izračunata iz vhodne številke // koda bo prikazala tudi vrednost niza // koda bo natisni tudi "hello world" #include "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############### ############################# // #######-natisni "hello world"-### ######### // ###################################### ### mexPrintf ("Pozdravljeni svet"); // ################################### ##### // ########-Pridobite stvari iz Matlaba-######### // ############### ###########################/ * razglasite spremenljivko matrike za shranjevanje dohodnih vrednosti*/double* InValues;/* dobite vrednosti, poslane iz matlab*/InValues = mxGetPr (prhs [0]);/* za uporabo teh vrednosti, poslanih iz matlab, naredite InValues [0], InValue [1], itd.v skladu s tem, koliko vrednosti je. Vrednosti bodo uporabljene spodaj */// ###################################### ## // ########-Vrne matriko številk-######### // ################## ########################/ * razglasi matriko, ki bo poslana matlabu (* je matrika) */double * OutValues;/ * Ustvari/dodeli povratni argument, 1x2 (stolpec 1 vrstica 2) matriko za prvo režo vrnilne matrike (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Pridobite kazalec na povratni argument */OutValues = mxGetPr (plhs [0]); / * dodeli vrednosti OutValues, ki se nahajajo v prvi reži vrnilne matrike, tukaj uporabljamo InValues za računalništvo OutValues */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ######################################### // ###########-Vrni niz-############# // ################ ###########################/* razglasi spremenljivko niza, ki jo je treba poslati v matlab*/char* str;/* dodeli vrednost string */str = "byebye";/ *postavite niz v drugo režo vrnilnih nizov (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ################################## // #############-vrnitev več stvari-############ // ############################### ############/ * Če želite vrniti več stvari, upoštevajte zgornja splošna pravila, vendar jih postavite v druge reže za PLH, plh [nekajštevilk] */}

3. korak: Če se iz kakršnega koli razloga ne sestavi

Če se iz kakršnega koli razloga ne sestavi
Če se iz kakršnega koli razloga ne sestavi

Če iz kakršnega koli razloga ne zbira (moral bi, v mojem računalniku dobro deluje), vidim te vire, sem se od njih učil. Imajo majhne napake (uporaba stare, nefunkcionalne slovnice itd.), Če pa greš sem in tja med tema dvema, bi moral imeti možnost, da skupaj zbrišeš nekaj, kar deluje. Dokumentacija/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Priporočena: