INHOUDSOPGAWE:

Maak 'n Matlab MEX -lêer: 3 stappe
Maak 'n Matlab MEX -lêer: 3 stappe

Video: Maak 'n Matlab MEX -lêer: 3 stappe

Video: Maak 'n Matlab MEX -lêer: 3 stappe
Video: Two ways to check if your Android phone has a remote IR Blaster (infrared) 2024, November
Anonim
Maak 'n Matlab MEX -lêer
Maak 'n Matlab MEX -lêer

Instruksies oor hoe om saamgestelde C -kode met Matlab te integreer. MEX staan vir MATLAB Executable. MEX-lêers is dinamies gekoppelde subroetines wat uit die C- of Fortran-bronkode geproduseer word, en kan saamgestel word vanaf MATLAB op dieselfde manier as MATLAB M-lêers of ingeboude funksies. Die eksterne koppelvlakfunksies bied funksies om data tussen MEX-lêers en MATLAB oor te dra, en die moontlikheid om MATLAB-funksies te bel vanaf C- of Fortran-kode. Hier wys ek u alles wat u nodig het om vinnig 'n nuttige mex-lêer te maak. need: = 'n teksredakteur = matlab 6.1 of hoër (vroeëre weergawes kan ook mex -lêers doen, maar 'n effens ander formaat) = matlab het sy eie c -samesteller wat dit meebring, maar ek het visuele c ++ samesteller gebruik omdat ek dit gehad het.

Stap 1: Die kode

Die kode
Die kode

laai die lêer wat ek aangeheg het, af: mextest1p0.cpp

cpp staan vir c ++ ……….. Dit druk 'hallo wêreld' in matlab, dit gee twee argumente terug na matlab, 'n twee -element getalreeks en 'n string, die eerste element van die teruggekeerde getalreeks is 1 + die getal wat u gestuur het, die tweede element van die teruggekeerde getalreeks is 2 + die nommer wat u dit gestuur het …………cpp lêer. Ek kan nie hierdie instruksies hier skryf nie, omdat instruksies die opdragte outomaties wysig en dit verkeerd laat verskyn. Op die onderstaande foto kan u die kode sien werk. Moenie bekommerd wees oor die 'opdragreëlwaarskuwing' nie; dit lyk asof dit niks uitwerk nie. Let daarop dat die huidige gids die.cpp -lêer aan die linkerkant bevat. Aan die regterkant kan u sien hoe ek die kode saamstel en dit dan vanaf matlab uitvoer. Lees die lêer in u teksredakteur deur (byvoorbeeld notaboek in vensters), dit is baie goed gedokumenteer en selfverduidelikend; u kan byna alles doen wat u nodig het deur die konvensies in die kode te volg (dws dit te kopieer en te plak en te maak geringe wysigings) ################################################# ######################### …….. NOTE …….. vanweë die irriterende outobewerking wat instruksies doen, is die kode soos op die volgende bladsy SAL NIE WERK NIE, U moet die lêer wat ek aangeheg het, laai in plaas daarvan om dit te kopieer en te plak. #################################################### #######################

Stap 2: Dit is die kode, MOENIE KOPIEER EN PAS NIE

Dit is die kode, MOET NIE AFKOPIER EN PAS NIE
Dit is die kode, MOET NIE AFKOPIER EN PAS NIE

#################################################### ###################### …….. NOTE …….. As gevolg van irriterende outobewerking wat instruksies doen, SAL die kode soos op hierdie bladsy gesien NIE WERK, U moet die lêer wat ek aangeheg het, aflaai in plaas daarvan om dit te kopieer en te plak. ######################################## // Dit is in c ++ geskryf deur leevonk // dit is kode vir 'n matlab mex lêer // die kode sal een getalwaarde inneem en twee getalwaardes oplewer // die twee uitsetgetalle word bereken uit die invoernommer // die kode sal ook 'n stringwaarde lewer // die kode sal druk ook "hallo wêreld"#sluit "mex.h" leeg mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## ############################# // #######-print "hello world"-### ######### // ######################################### ### mexPrintf ("Hallo wêreld"); // ####################################### ##### // #########-Kry dinge uit Matlab-############################ ############################ * verklaar 'n skikkingveranderlike om die inkomende waardes te hou*/dubbel* InValues;/* kry die waardes gestuur vanaf matlab*/InValues = mxGetPr (prhs [0]);/* om hierdie waardes wat vanaf matlab gestuur is, te gebruik, doen InValues [0], InValue [1], ens volgens hoeveel waardes daar is. Die InValues sal hieronder gebruik word */// ######################################### ## // #########-Wys 'n getalreeks-################################ #########################/ * verklaar die skikking wat na matlab gestuur word (die * maak dit 'n skikking) */dubbel * OutValues;/ * Skep/ken opgaafargument toe, 'n 1x2 (1 ry 2 -kolom) Matriks vir die opgawe -skikking se eerste gleuf (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Kry wyser na die retourargument */OutValues = mxGetPr (plhs [0]); / * ken waardes toe aan OutValues wat in die eerste gleuf van die retourskikking sal wees; hier gebruik ons die InValues om die OutValues te bereken */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ############################################# // ################################################################################### ###########################/* verklaar dat die string veranderlike gestuur moet word na matlab*/char* str;/* ken 'n waarde toe aan die string */str = "byebye";/ *plaas die string in die tweede gleuf in die retourskikkings (plhs [1]) */plhs [1] = mxCreateString (str); // ########### ################################### // ############-terugkeer meer dinge-############# // ################################## #############/ * om meer goed terug te gee, volg die algemene reëls hierbo, maar plaas die goed in ander plhs -gleuwe, plhs [somenumber] */}

Stap 3: As dit om watter rede ook al nie saamstel nie

As dit om watter rede ook al nie saamstel nie
As dit om watter rede ook al nie saamstel nie

As dit om watter rede ook al nie saamgestel word nie (dit behoort goed te werk op my rekenaar), sien ek hierdie bronne, dit is waar ek geleer het. Hulle het klein foute (gebruik ou, nie -funksionele grammatika, ens.), Maar as u tussen die twee heen en weer gaan, moet u iets kan saamwerk wat werk. Http://web.ccr.jussieu.fr/ccr/ Dokumentasie/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Aanbeveel: