Innholdsfortegnelse:
- Trinn 1: Koden
- Trinn 2: Dette er koden, IKKE KOPIER OG LIM
- Trinn 3: Hvis det av en eller annen grunn ikke kompileres
Video: Lag en Matlab MEX -fil: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Instruksjoner om hvordan du integrerer kompilert C -kode med Matlab. MEX står for MATLAB Executable. MEX-filer er dynamisk koblede subrutiner produsert fra C- eller Fortran-kildekoden, som når de kompileres, kan kjøres fra MATLAB på samme måte som MATLAB M-filer eller innebygde funksjoner. De eksterne grensesnittfunksjonene gir funksjonalitet for å overføre data mellom MEX-filer og MATLAB, og muligheten til å ringe MATLAB-funksjoner fra C- eller Fortran-kode. Her viser jeg deg alt du trenger for å raskt lage en nyttig mex-fil. Hva du vil need: = en tekstredigerer = matlab 6.1 eller nyere (tidligere versjoner kan også gjøre mex -filer, men litt annerledes format) = matlab har sin egen c -kompilator som følger med, men jeg brukte visuell c ++ - kompilator fordi jeg hadde det.
Trinn 1: Koden
last ned filen jeg la ved: mextest1p0.cpp
cpp står for c ++ ……… Dette er hva koden gjør: ……… det tar et tall du sender den fra matlab -ledeteksten. Den skriver ut "hei verden" i matlab, den returnerer to argumenter til matlab, en tall med to elementer og en streng det første elementet i den returnerte tallmatrisen er 1 + tallet du sendte den, det andre elementet i den returnerte tallmatrisen er 2 + nummeret du sendte det ………. Slik implementerer du det: ………… lagre filen på datamaskinen din start matlab naviger i matlab til katalogen der filen er, følg deretter instruksjonene for kompilering og kjøring øverst i.cpp -fil. Jeg kan ikke skrive disse instruksjonene her fordi instruktører redigerer kommandoene automatisk og får dem til å vises feil. På bildet nedenfor kan du se koden fungere. Ikke bekymre deg for "kommandolinjevarselen", det ser ikke ut til å påvirke noe. Legg merke til på venstre side, den nåværende katalogen inneholder.cpp -filen. Til høyre kan du se meg kompilere koden og deretter kjøre den fra matlab. Les gjennom filen i tekstredigeringsprogrammet (for eksempel notisblokk i Windows), den er veldig godt dokumentert og forklarer seg selv. Du vil kunne gjøre nesten alt du trenger ved å følge konvensjonene i koden (dvs. kopiere og lime den inn og lage små modifikasjoner) ################################################# ######################### …….. MERKNING …….. på grunn av noen irriterende automatisk redigering som instruktører gjør, er koden sett på neste side VIRKER IKKE, DU MÅ Laste ned filen jeg har lagt ved i stedet for å kopiere og lime inn denne. #################################################### #######################
Trinn 2: Dette er koden, IKKE KOPIER OG LIM
#################################################### ###################### …….. MERKNAD ……..på grunn av noen irriterende automatisk redigering som instrukser gjør, vil IKKE koden sett på denne siden ARBEID, du MÅ Laste ned filen jeg har lagt ved i stedet for å kopiere og lime inn dette. ################################# ######################################### // Dette ble skrevet i c ++ av leevonk // det er kode for en matlab mex -fil // koden tar inn en tallverdi og sender ut to tallverdier // de to utdatatallene beregnes ut fra inngangstallet // koden vil også sende ut en strengverdi // koden vil skriv også ut "hei verden" #include "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############# ############################# // #######-skriv ut "hei verden"-### ######### // ######################################### ### mexPrintf ("Hei verden"); // ###################################### ##### // #########-Få ting fra Matlab-########## // ################# ###########################/ * erklær en matrisvariabel for å holde de innkommende verdiene*/dobbelt* InValues;/* få verdiene sendt fra matlab*/InValues = mxGetPr (prhs [0]);/* for å bruke disse verdiene som ble sendt fra matlab, gjør InValues [0], InValue [1], osv. I henhold til hvor mange verdier det er. InValues vil bli brukt under */// ########################################## ## // #########-Returner et tallarray-############################### #########################/ * erklærer matrisen som skal sendes til matlab (* gjør det til en matrise) */double * OutValues;/ * Opprett/tildel returargument, en 1x2 (1 rad 2 kolonne) Matrise for returmatrisens første spor (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Få pekeren til returargumentet */OutValues = mxGetPr (plhs [0]); / * tilordne verdier til OutValues som vil ligge i returmatrisens første spor, her bruker vi InValues til å datamaskinere OutValues */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ############################################# // ############ Returner en streng-############# // ################## ###########################/* erklærer strengvariabelen for å bli sendt til matlab*/char* str;/* tilordne en verdi til string */str = "byebye";/ *sett strengen i retursystemets andre spor (plhs [1]) */plhs [1] = mxCreateString (str); // ########### ##################################//###########--komme tilbake flere ting-############# // ################################## #############/ * for å returnere flere ting, følg generelle regler ovenfor, men legg tingene i andre plhs -spor, plhs [somenumber] */}
Trinn 3: Hvis det av en eller annen grunn ikke kompileres
Hvis den av en eller annen grunn ikke kompilerer (den burde fungere bra på datamaskinen min) ser disse ressursene, de er der jeg lærte av. De har små feil (bruk litt gammel, ikke -funksjonell grammatikk, osv.), Men hvis du går frem og tilbake mellom de to, bør du kunne kobbe sammen noe som fungerer. Http://web.ccr.jussieu.fr/ccr/ Documentation/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/
Anbefalt:
Lag GPS -GRENSER ved å bruke Arduino: 8 trinn
Lag GPS -GRENSER Ved å bruke Arduino: I denne opplæringen lærer vi hvordan du lager en GPS -GRENSE med Arduino, dette er nyttig når du har en robot og du ikke vil at den skal gå utenfor det angitte området. Når roboten er utenfor området , vil displayet vise "Utenfor"
Lag Macintosh Plus ROM: 3 trinn (med bilder)
Lag Macintosh Plus ROM -er: Denne instruksjonsguiden veileder deg gjennom prosessen med å "rippe" EPROM bilder fra fra Macintosh Plus ROM -brikkene dine og (eller) " brenning " bildene til nye sjetonger. Prosessen vil i utgangspunktet bli utført to ganger for å lage begge & quot
Lag en uendelig speilklokke: 15 trinn (med bilder)
Lag en Infinity Mirror Clock: I et tidligere prosjekt bygde jeg et uendelig speil, der mitt endelige mål for det var å gjøre det til en klokke. (Lag et fargerikt uendelig speil) Jeg forfulgte ikke det etter å ha bygd det, for selv om det så kult ut, var det noen ting med
Lag din egen USB -vifte - Engelsk / fransk: 3 trinn
Lag din egen USB -vifte | English / Francais: ENGLISH I dag så jeg på nettsteder at vi kunne kjøpe USB -vifte. Men jeg fortalte hvorfor ikke lage min? Hva du trenger: - Selvklebende tape elektriker eller andetape - En PC -vifte - En USB -kabel som ikke tjener deg - En wire cutter - En skrutrekker - En snor musling
Lag din egen kjørekommando med enkle trinn: 4 trinn
Lag din egen run -kommando med enkle trinn: Her viser jeg hvordan du kan lage din egen run -kommando i Windows OS. Egentlig er denne funksjonen i Windows flott, noe som er nyttig for å åpne applikasjonsvinduet umiddelbart. Så nå kan du også opprette kommandoen din for å åpne et hvilket som helst program ved å skrive inn