Indholdsfortegnelse:
- Trin 1: Koden
- Trin 2: Dette er koden, IKKE KOPIERE OG PASTE
- Trin 3: Hvis det af en eller anden grund ikke kompileres
Video: Lav en Matlab MEX -fil: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:30
Instruktioner om, hvordan man integrerer kompileret C -kode med Matlab. MEX står for MATLAB Executable. MEX-filer er dynamisk forbundne underrutiner produceret fra C- eller Fortran-kildekode, der, når de kompileres, kan køres indefra MATLAB på samme måde som MATLAB M-filer eller indbyggede funktioner. De eksterne grænsefladefunktioner giver funktionalitet til at overføre data mellem MEX-filer og MATLAB, og muligheden for at kalde MATLAB-funktioner fra C- eller Fortran-kode. Her viser jeg dig alt, hvad du har brug for for hurtigt at lave en nyttig mex-fil. Hvad du vil need: = en tekstredigerer = matlab 6.1 eller nyere (tidligere versioner kan også lave mex -filer, men lidt anderledes format) = matlab har sin egen c -compiler, der følger med, men jeg brugte visuel c ++ compiler, fordi jeg havde det.
Trin 1: Koden
download den fil, jeg vedhæftede: mextest1p0.cpp
cpp står for c ++ ……… Dette er hvad koden gør: ……… det tager et nummer, du sender den fra matlab -kommandoprompten. Det udskriver "hej verden" i matlab det returnerer to argumenter til matlab, et to -element nummer array og en streng det første element i det returnerede tal array er 1 + det nummer du sendte det det andet element i det returnerede tal array er 2 + nummeret du sendte det ………. Sådan implementeres det: ………… gem filen på din computer start matlab naviger i matlab til det bibliotek, hvor filen er, følg derefter kompilations- og udførelsesinstruktionerne øverst i.cpp -fil. Jeg kan ikke skrive disse instruktioner her, fordi instruktører automatisk redigerer kommandoerne og får dem til at blive vist forkert. På billedet herunder kan du se koden fungere. Du skal ikke bekymre dig om "kommandolinjeadvarsel", det ser ikke ud til at påvirke noget. Bemærk i venstre side, den aktuelle mappe indeholder.cpp -filen. Til højre kan du se mig sammensætte koden og derefter udføre den fra matlab. Læs filen igennem i din teksteditor (f.eks. Notesblok i Windows), den er meget veldokumenteret og selvforklarende, du vil kunne gøre næsten alt hvad du har brug for ved at følge konventionerne i koden (dvs. kopiere og indsætte den og lave små ændringer) ################################################# ######################### …….. BEMÆRK …….. på grund af nogle irriterende automatisk redigering, som instruktører gør, koden som vist på næste side VIRKER IKKE, DU SKAL DOWNLOADE FILEN, jeg vedhæftede i stedet for at kopiere og indsætte denne. #################################################### #######################
Trin 2: Dette er koden, IKKE KOPIERE OG PASTE
#################################################### ###################### …….. BEMÆRK ……..på grund af nogle irriterende automatisk redigering, som instruktører gør, VIL koden som vist på denne side IKKE ARBEJDE, du er nødt til at downloade den fil, jeg vedhæftede i stedet for at kopiere og indsætte dette. ################################## ######################################### Dette blev skrevet i c ++ af leevonk // det er kode til en matlab mex -fil // koden vil indtage en talværdi og udsende to talværdier // de to outputnumre beregnes ud fra inputnummeret // koden udsender også en strengværdi // koden vil udskriv også "hej verden" #include "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## ############################# // #######-print "hej verden"-### ######### // ######################################### ### mexPrintf ("Hej verden"); // ####################################### ##### // #########-Få ting fra Matlab-########## // ################# ############################/ * erklærer en matrixvariabel for at holde de indgående værdier*/dobbelt* InValues;/* få værdierne sendt fra matlab*/InValues = mxGetPr (prhs [0]);/* for at bruge disse værdier, der blev sendt fra matlab, gør InValues [0], InValue [1] osv. I henhold til hvor mange værdier der er. InValues bruges nedenfor */// ########################################## ## // #########-Returner et tal array-########## // ##################### #########################/ * erklærer det array, der sendes til matlab (* gør det til et array) */double * OutValues;/ * Opret/tildel returneringsargument, en 1x2 (1 række 2 kolonne) Matrix for return arrayets første slot (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Hent markør til returargumentet */OutValues = mxGetPr (plhs [0]); / * tildel værdier til OutValues, som ligger i return arrayets første slot, her bruger vi InValues til at computer OutValues */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ############################################# // ############-Returner en streng-############# // ################## ###########################/* erklærer strengvariablen for at blive sendt til matlab*/char* str;/* tildel en værdi til string */str = "byebye";/ *læg strengen i returkarrays anden plads (plhs [1]) */plhs [1] = mxCreateString (str); // ########### ##################################//###########--Vend tilbage flere ting-############# // ################################## #############/ * for at returnere flere ting, følg de generelle regler ovenfor, men sæt tingene i andre plhs -slots, plhs [somenumber] */}
Trin 3: Hvis det af en eller anden grund ikke kompileres
Hvis det af en eller anden grund ikke kompileres (det burde, fungerer fint på min computer) se disse ressourcer, er det her, jeg lærte af. De har små fejl (brug noget gammel, ikke -funktionel grammatik osv.), Men hvis du går frem og tilbage mellem de to, skal du være i stand til at samle noget, der virker. Http://web.ccr.jussieu.fr/ccr/ Dokumentation/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/
Anbefalede:
Lav GPS -GRÆNSER ved hjælp af Arduino: 8 trin
Lav GPS -GRÆNSER ved hjælp af Arduino: I denne vejledning lærer vi, hvordan du laver en GPS -GRÆNSE GRÆNSE ved hjælp af Arduino, dette er nyttigt, når du har en robot, og du ikke vil have den til at gå uden for det angivne område. Når robotten er uden for området , viser displayet "Udenfor"
Lav et uendeligt spejlur: 15 trin (med billeder)
Lav et uendeligt spejlur: I et tidligere projekt byggede jeg et uendeligt spejl, hvor mit ultimative mål for det var at gøre det til et ur. (Lav et farverigt uendeligt spejl) Jeg forfulgte ikke det efter at have bygget det, for selvom det så cool ud, var der et par ting med
Lav din egen USB -blæser - Engelsk / fransk: 3 trin
Lav din egen USB -blæser | English / Francais: ENGLISH I dag så jeg på websteder, at vi kunne købe USB -ventilator. Men jeg fortalte hvorfor ikke lave min? Hvad du har brug for: - Selvklæbende elektriker eller andetape - En pc -blæser - Et USB -kabel, der ikke tjener dig - En trådskærer - En skruetrækker - En snoremusling
Lav dit eget fotovoltaiske 5V -system: 4 trin (med billeder)
Lav dit eget fotovoltaiske 5V-system: Dette bruger en bukkonverter som en 5V-udgang til at oplade batteriet (Li Po/Li-ion). Og Boost -konverter til 3,7V batteri til 5V USB -udgang til nødvendige enheder 5 V. Ligner det originale system, der bruger blybatteri som energilagringsopladning e
Live 4G/5G HD -videostreaming fra DJI Drone ved lav ventetid [3 trin]: 3 trin
Live 4G/5G HD-videostreaming fra DJI Drone ved lav forsinkelse [3 trin]: Følgende vejledning hjælper dig med at få live streams i HD-kvalitet fra næsten enhver DJI-drone. Ved hjælp af FlytOS Mobile App og FlytNow Web Application kan du starte streaming af video fra dronen