Sisällysluettelo:

Matlab MEX -tiedoston luominen: 3 vaihetta
Matlab MEX -tiedoston luominen: 3 vaihetta

Video: Matlab MEX -tiedoston luominen: 3 vaihetta

Video: Matlab MEX -tiedoston luominen: 3 vaihetta
Video: Bewafa Mashup Part-3 || Hittu Visual || Dj Irfan || Vinay Nayak || Umesh Barot || Aaryan Barot 2024, Heinäkuu
Anonim
Matlab MEX -tiedoston tekeminen
Matlab MEX -tiedoston tekeminen

Ohjeet käännetyn C -koodin integroimiseksi Matlabiin. MEX tarkoittaa MATLAB Executable. MEX-tiedostot ovat dynaamisesti linkitettyjä aliohjelmia, jotka on tuotettu C- tai Fortran-lähdekoodista ja joita voidaan koottuina ajaa MATLABin sisältä samalla tavalla kuin MATLAB M-tiedostoja tai sisäänrakennettuja toimintoja. Ulkoiset käyttöliittymätoiminnot tarjoavat toimintoja tietojen siirtämiseen MEX-tiedostojen ja MATLAB-tiedostojen välillä sekä mahdollisuuden kutsua MATLAB-toimintoja C- tai Fortran-koodista. Tässä näytän sinulle kaiken, mitä tarvitset hyödyllisen mex-tiedoston nopeaan luomiseen. tarvitse: = tekstieditori = matlab 6.1 tai uudempi (aiemmat versiot voivat tehdä myös mex -tiedostoja, mutta hieman eri muodossa) = matlabilla on oma c -kääntäjä, joka tulee sen mukana, mutta käytin visuaalista c ++ -kääntäjää, koska minulla oli se.

Vaihe 1: Koodi

Koodi
Koodi

lataa liittämäni tiedosto: mextest1p0.cpp

cpp tarkoittaa c ++ ……… Tätä koodi tekee: ……… se vaatii numeron, jonka lähetät sen matlab -komentokehotteesta. Se tulostaa "hei maailma" matlabissa ja palauttaa kaksi argumenttia matlabille, kahden elementin numerotaulukon ja merkkijonon palautetun numerotaulukon ensimmäinen elementti on 1 + lähettämäsi numero palautetun numeromatriisin toinen elementti on 2 + lähettämäsi numero ………. Tämä toteutetaan seuraavasti: ………… tallenna tiedosto tietokoneellesi Käynnistä matlab navigoi matlabissa hakemistoon, jossa tiedosto on ja seuraa sitten kokoamis- ja suoritusohjeita.cpp -tiedosto. En voi kirjoittaa näitä ohjeita tänne, koska instructables muokkaa komentoja automaattisesti ja saa ne näyttämään väärin. Alla olevassa kuvassa näet koodin toimivan. Älä huolehdi "komentorivivaroituksesta", sillä ei näytä olevan mitään vaikutusta. Huomaa vasemmalla, nykyinen hakemisto sisältää.cpp -tiedoston. Oikealla näet, kuinka koon koodin ja suoritan sen sitten matlabista. Lue tiedosto tekstieditorissa (esimerkiksi muistilehtiö Windowsissa), se on hyvin dokumentoitu ja itsestään selvä, voit tehdä melkein mitä tarvitset noudattamalla koodin käytäntöjä (eli kopioimalla ja liittämällä sen ja tekemällä pieniä muutoksia) #################################### ######################## …….. HUOMAUTUS …….. koska jotkut ärsyttävät automaattiset editoinnit, joita ohjaukset tekevät, koodi näkyy seuraava sivu EI TOIMI, sinun on LATAA LIITETTY TIEDOSTO sen kopioinnin ja liittämisen sijaan. ################################################## ######################

Vaihe 2: Tämä on koodi, ÄLÄ KOPIOI JA PASTAA

Tämä on koodi, ÄLÄ KOPIOI JA LIITÄ
Tämä on koodi, ÄLÄ KOPIOI JA LIITÄ

################################################## #################### ….. TYÖ, sinun on LATAA LIITETTY TIEDOSTO sen kopioinnin ja liittämisen sijaan. ################################## ###################################### Tämä on kirjoittanut c ++: lla leevonk // se on koodi Matlab mex -tiedostolle // koodi ottaa yhden numeroarvon ja antaa kaksi numeroarvoa // kaksi lähtölukua lasketaan tulonumerosta // koodi antaa myös merkkijonon arvon // koodi tulosta myös "hello world" #include "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############## ####################################-tulosta "hei maailma"-### ######### // ####################################### ### mexPrintf ("Hello world"); // ##################################### ##### // ########-Get Stuff from Matlab-########################## ########################## * ilmoita matriisimuuttuja, joka pitää saapuvat vales*/double* InValues;/* hae matlabista lähetetyt arvot*/InValues = mxGetPr (prhs [0]);/* käyttääksesi näitä matlabista lähetettyjä arvoja, tee InValues [0], InValue [1], jne. Sen mukaan, kuinka monta arvoa on. InValues -arvoja käytetään alla */// ######################################### ## // ########-Palauta numerotaulukko-######### // ################### #######################/ * ilmoita matlabille lähetettävä taulukko (* tekee siitä taulukon) */double * OutValues;/ * Luo/varaa palautus argumentti, 1x2 (1 rivi 2 sarake) matriisi paluutaulukon ensimmäiselle aikavälille (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Hae osoitin paluuargumenttiin */OutValues = mxGetPr (plhs [0]); / * määritä arvot OutValues -arvoille, jotka sijaitsevat palautusmatriisin ensimmäisessä paikassa, tässä käytämme InValues -arvoja OutValues -arvojen */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ########################################### ###########-Palauta merkkijono-############# // ################# ############################/* ilmoittaa merkkijonomuuttujan lähetettäväksi matlab*/char* str;/* anna arvo string */str = "byebye";/ *laita merkkijono paluutaulukon toiseen paikkaan (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ##################################//###########--palata lisää juttuja-############################################# #############/ * palauta lisää tavaraa noudattamalla yllä olevia yleisiä sääntöjä, mutta laita tavara muihin plhs -korttipaikkoihin, plhs [somenumber] */}

Vaihe 3: Jos jostain syystä se ei käännä

Jos jostain syystä se ei koota
Jos jostain syystä se ei koota

Jos jostain syystä se ei käännä (sen pitäisi toimia hyvin tietokoneessani) nähdä nämä resurssit, olen oppinut niistä. Niissä on pieniä häiriöitä (vanhan, toimimattoman kieliopin käyttö jne.) Dokumentaatio/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Suositeltava: