Sisukord:

Matlabi MEX -faili tegemine: 3 sammu
Matlabi MEX -faili tegemine: 3 sammu

Video: Matlabi MEX -faili tegemine: 3 sammu

Video: Matlabi MEX -faili tegemine: 3 sammu
Video: "Regressive" Defined - With 4 Examples 2024, November
Anonim
Matlabi MEX -faili tegemine
Matlabi MEX -faili tegemine

Juhised kompileeritud C -koodi Matlabi integreerimiseks. MEX tähistab MATLAB Executable. MEX-failid on dünaamiliselt lingitud alamprogrammid, mis on toodetud C- või Fortran-lähtekoodist ja mida saab koostamisel käivitada MATLAB-ist samamoodi nagu MATLAB-i M-faile või sisseehitatud funktsioone. Välise liidese funktsioonid pakuvad funktsionaalsust andmete edastamiseks MEX-failide ja MATLAB-i vahel ning võimalust helistada MATLAB-funktsioonidele C- või Fortran-koodist. Siin näitan teile kõike, mida vajate kasuliku mex-faili kiireks tegemiseks. vaja: = tekstiredaktor = matlab 6.1 või uuem (varasemad versioonid võivad teha ka mex -faile, kuid veidi teistsuguses vormingus) = matlabil on kaasas oma c -kompilaator, kuid ma kasutasin visuaalset c ++ kompilaatorit, kuna see oli mul olemas.

Samm: kood

Kood
Kood

laadige alla lisatud fail: mextest1p0.cpp

cpp tähistab c ++ ……… Seda teeb kood: ……… see võtab numbri, mille saadate selle Matlab käsurealt. See prindib matlabis "tere maailm", tagastab matlabile kaks argumenti, kahe elemendiga numbrimassiivi ja stringi, mille tagastatud numbrimassiivi esimene element on 1 + number, mille te selle saatsite, tagastatud numbrimassiivi teine element on 2 + number, mille te selle saatsite ………. Seda rakendatakse järgmiselt: ………… salvestage fail oma arvutisse käivitage matlab navigeerige matlabis kataloogi, kus fail asub, seejärel järgige selle ülaosas olevaid kompileerimise ja täitmise juhiseid.cpp -fail. Ma ei saa neid juhiseid siia kirjutada, sest instructables muudab käske automaatselt ja paneb need valesti ilmuma. Alloleval pildil näete koodi töötamist. Ärge muretsege "käsureahoiatuse" pärast, tundub, et see ei mõjuta midagi. Märkus vasakul küljel, praegune kataloog sisaldab.cpp -faili. Paremal näete, kuidas ma koodi koostan ja seejärel matlabist käivitan. Lugege fail läbi oma tekstiredaktoris (näiteks Windowsi märkmik), see on väga hästi dokumenteeritud ja iseenesestmõistetav, saate koodis sisalduvate reeglite järgimisel teha peaaegu kõike, mida vajate (st kopeerida ja kleepida ning teha väikesed muudatused) ###################### #### järgmine lehekülg EI TOIMI, peate selle kopeerimise ja kleepimise asemel alla laadima faili, mille lisasin. ########################################### #####################

2. samm: see on kood, ÄRGE KOOPI JA Kleepige

See on Kood, ÄRGE KOOPI JA Kleepige
See on Kood, ÄRGE KOOPI JA Kleepige

############################################ ##################### …… … TÖÖ, peate selle kopeerimise ja kleepimise asemel alla laadima faili, mille lisasin. ############################## ####################################### See on kirjutatud c ++ keeles leevonk // see on matlab mex -faili kood // kood võtab ühe numbriväärtuse ja väljastab kaks numbriväärtust // kaks väljundnumbrit arvutatakse sisendarvust // kood väljastab ka stringi väärtuse // kood prindi ka "tere maailm"#sisalda "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## ####################################-print "tere maailm"-### ######### // ################################ ### mexPrintf ("Tere maailm"); // #################################### ##### // ########-Get Stuff from Matlab-########################## ########################## * deklareerige massiivmuutuja sissetulevate valeside hoidmiseks*/double* InValues;/* hankige matlabilt saadetud väärtused*/InValues = mxGetPr (prhs [0]);/* matlabilt saadetud väärtuste kasutamiseks tehke InValues [0], InValue [1] jne vastavalt sellele, kui palju väärtusi on. Sisestatud väärtusi kasutatakse allpool */// ############################## ## // ########-Tagastab numbrimassiivi-######### // ################### #######################/ * deklareerige massiiv, mis saadetakse matlabile (* teeb sellest massiivi) */double * OutValues;/ * Tagasiargumendi loomine/eraldamine, 1x2 (1 rida 2 veerg) maatriks tagastamismassiivi esimese pesa jaoks (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Hankige kursor naasmisargumendile */OutValues = mxGetPr (plhs [0]); / * määrake väärtused OutValues, mis asuvad tagastusmassiivi esimeses pesas, siin kasutame InValues, et arvutada OutValues */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ########################################## ###########-tagastage string-############# // ################# ###########################/* deklareerige stringimuutuja, mis saadetakse aadressile matlab*/char* str;/*, määrake string */str = "byebye";/ *pange string tagastamismassiivide teise pessa (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ######################################### veel asju-##################################### #############/ * rohkemate asjade tagastamiseks järgige ülaltoodud üldreegleid, kuid pange kraam teistesse plhs -teenindusaegadesse, plhs [somenumber] */}

Samm: kui seda mingil põhjusel ei koostata

Kui seda mingil põhjusel ei koostata
Kui seda mingil põhjusel ei koostata

Kui see mingil põhjusel ei kompileeri (see peaks minu arvutis hästi toimima), näete neid ressursse, olen sealt õppinud. Neil on vähe tõrkeid (vana, mittetoimiva grammatika kasutamine jne), kuid kui nende kahe vahel edasi -tagasi liikuda, peaksite suutma kokku panna midagi, mis töötab. Https://web.ccr.jussieu.fr/ccr/ Dokumentatsioon/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Soovitan: