Tartalomjegyzék:

Matlab MEX fájl készítése: 3 lépés
Matlab MEX fájl készítése: 3 lépés

Videó: Matlab MEX fájl készítése: 3 lépés

Videó: Matlab MEX fájl készítése: 3 lépés
Videó: Introduction to MATLAB for beginners | How to use MATLAB | MATLAB Tutorial for beginners | Mruduraj 2024, November
Anonim
Matlab MEX fájl készítése
Matlab MEX fájl készítése

Utasítások az összeállított C kód Matlab integrálására. A MEX a MATLAB Executable rövidítése. A MEX-fájlok dinamikusan összekapcsolt alprogramok, amelyeket C vagy Fortran forráskódból állítanak elő, és amelyeket lefordítva a MATLAB-ról ugyanúgy futtathatnak, mint a MATLAB M-fájlokat vagy a beépített funkciókat. A külső interfész funkciók lehetővé teszik az adatok átvitelét a MEX fájlok és a MATLAB között, valamint a MATLAB függvények C vagy Fortran kódból történő hívását. Itt megmutatok mindent, amire szüksége van egy hasznos mex fájl gyors létrehozásához. szükség: = szövegszerkesztő = matlab 6.1 vagy újabb (a korábbi verziók mex fájlokat is tudnak készíteni, de kissé eltérő formátumban) = a matlab saját c -fordítóját tartalmazza, de vizuális c ++ fordítót használtam, mert megvolt.

1. lépés: A kód

A kód
A kód

töltse le a csatolt fájlt: mextest1p0.cpp

A cpp jelentése c ++ ……… Ezt teszi a kód: ……… kell egy szám, amelyet a matlab parancssorából küld. A "hello world" -t nyomtatja a matlab -ban, két argumentumot ad vissza a matlab -nak, egy két elemes számtömböt és egy karakterláncot. A visszaadott számtömb első eleme 1 + az elküldött szám, a visszaadott számtömb második eleme 2 + az elküldött szám ………. Ezt így kell megvalósítani: ………… mentse el a fájlt a számítógépére start matlab navigáljon a matlab -ban abba a könyvtárba, ahol a fájl található, majd kövesse az oldal tetején található összeállítási és végrehajtási utasításokat.cpp fájl. Nem tudom ide írni ezeket az utasításokat, mert az instructables automatikusan szerkeszti a parancsokat, és helytelenül megjeleníti őket. Az alábbi képen láthatja, hogy a kód működik. Ne aggódjon a "parancssori figyelmeztetés" miatt, úgy tűnik, ez nem befolyásol semmit. Megjegyzés a bal oldalon, az aktuális könyvtár tartalmazza a.cpp fájlt. A jobb oldalon láthatod, ahogy összeállítom a kódot, majd végrehajtom a matlabból. Olvassa el a fájlt a szövegszerkesztőben (például a Jegyzettömb a Windows rendszerben), nagyon jól dokumentált és magától értetődő, szinte mindent megtehet, amire szüksége van a kódban leírt szabályok betartásával (pl. Másolása és beillesztése, valamint csekély módosítások) ######################## …….. MEGJEGYZÉS …….. az utasítások némi bosszantó automatikus szerkesztése miatt, a kód az következő oldal NEM MŰKÖDIK, LETÖLTENI A FÁJLOT, amelyet csatoltam, a másolás és beillesztés helyett. #################################################### ######################

2. lépés: Ez a kód, NE MÁSOLJON ÉS PASZTOLJON

Ez a kódex, NE MÁSOLJON ÉS PASZTOLJON
Ez a kódex, NE MÁSOLJON ÉS PASZTOLJON

#################################################### ##################################################Ír Lep en RÓL …….. MEGJEGYZÉS …….. az utasítások némi bosszantó automatikus szerkesztése miatt az ezen az oldalon látható kód NEM MUNKA, le kell töltenie az általam csatolt fájlt, másolás és beillesztés helyett. ############## ######################################## Ezt írta c ++ nyelven: leevonk // ez egy matlab mex fájl kódja // a kód egy számértéket vesz fel és két számértéket ad ki // a két kimeneti számot a bemeneti számból számítják ki // a kód egy karakterlánc értéket is kiad // // a kód "hello world" nyomtatása is #include "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## ############################# // #######-print "hello world"-### ######### // ######################################## ### mexPrintf ("Hello world"); // ###################################### ##### // ########-Get Stuff From Matlab-########################### ########################### * tömbváltozó deklarálása a bejövő vales tárolására*/double* InValues;/* a matlabból küldött értékek*/InValues = mxGetPr (prhs [0]);/* a matlabból küldött értékek használatához, do InValues [0], InValue [1], ettől függően, hogy hány érték van. Az InValues értékeket az alábbiakban fogjuk használni. * ## // ########-Számtömb visszaadása-######### // ################### ########################/ * deklarálja a matlabra küldendő tömböt (a * tömbvé teszi) */double * OutValues;/ * Hozzon létre/rendeljen vissza visszatérési argumentumot, 1x2 (1 sor 2 oszlop) mátrixot a visszatérési tömb első helyéhez (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Mutasson a visszatérési argumentumra */OutValues = mxGetPr (plhs [0]); / * értékeket rendel az OutValues értékekhez, amelyek a visszatérési tömb első foglalatában fognak elhelyezkedni, itt az InValues értékeket használjuk az OutValues kiszámításához */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ############################################ ###########-Vissza egy karakterláncot-############# // ################## ############################/* deklarálja a matlab*/char* str;/* számára elküldendő karakterlánc -változót, és rendeljen hozzá értéket a string */str = "byebye";/ *helyezze a karakterláncot a visszatérési tömbök második nyílásába (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ##################################//###########--Visszatérés több cucc--############//################################ #############/ * Ha több dolgot szeretne visszaküldeni, kövesse a fenti általános szabályokat, de helyezze a cuccot más plhs -helyekbe, plhs [somenumber] */}

3. lépés: Ha bármilyen okból nem áll össze

Ha bármilyen okból nem áll össze
Ha bármilyen okból nem áll össze

Ha bármilyen okból nem fordítja le (kellene, jól működik a számítógépemen), akkor lássa ezeket az erőforrásokat, innen tanultam. Apró hibáik vannak (néhány régi, nem működő nyelvtan használata stb.) Dokumentáció/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Ajánlott: