Përmbajtje:

Bërja e një skedari Matlab MEX: 3 hapa
Bërja e një skedari Matlab MEX: 3 hapa

Video: Bërja e një skedari Matlab MEX: 3 hapa

Video: Bërja e një skedari Matlab MEX: 3 hapa
Video: 4 SOLID MX 5 SETUPS TO MAKE OVER 100 UNITS PER 30= winning roulette system- winning roulette 2024, Nëntor
Anonim
Krijimi i një skedari Matlab MEX
Krijimi i një skedari Matlab MEX

Udhëzime se si të integroni kodin C të përpiluar me Matlab. MEX qëndron për MATLAB Ekzekutueshëm. Dosjet MEX janë nënrutina të lidhura në mënyrë dinamike të prodhuara nga kodi burimor C ose Fortran që, kur përpilohen, mund të ekzekutohen nga brenda MATLAB në të njëjtën mënyrë si skedarët MATLAB M ose funksionet e integruara. Funksionet e ndërfaqes së jashtme ofrojnë funksionalitet për të transferuar të dhëna midis skedarëve MEX dhe MATLAB, dhe aftësinë për të thirrur funksione MATLAB nga kodi C ose Fortran. Këtu do t'ju tregoj gjithçka që ju nevojitet për të bërë shpejt një skedar meks të dobishëm. nevoja: = një redaktues teksti = matlab 6.1 ose më lart (versionet e mëparshme mund të bëjnë skedarë mex por edhe format pak më të ndryshëm) = matlab ka përpiluesin e vet të c që vjen me të, por unë kam përdorur përpiluesin vizual c ++ sepse e kisha.

Hapi 1: Kodi

Kodi
Kodi

shkarkoni skedarin që kam bashkangjitur: mextest1p0.cpp

cpp qëndron për c ++ ……… Kjo është ajo që bën kodi: ……… merr një numër që e dërgoni nga linja e komandës matlab. Shtyp "hello world" në matlab ai kthen dy argumente në matlab, një grup me dy elementë dhe një varg elementi i parë i grupit të numrave të kthyer është 1 + numri që i keni dërguar elementi i dytë i grupit të numrave të kthyer është 2 + numrin që e keni dërguar ………. Kjo është mënyra se si ta zbatoni atë: ………… ruani skedarin në kompjuterin tuaj filloni matlab lundroni në matlab në drejtorinë ku skedari është më pas ndiqni udhëzimet e përpilimit dhe ekzekutimit në krye të skedarit.cpp file. Unë nuk mund t'i shkruaj këto udhëzime këtu sepse instruksionet i redaktojnë automatikisht komandat dhe i bën ato të shfaqen gabimisht. Në foton më poshtë mund të shihni kodin duke punuar. Mos u shqetësoni për "paralajmërimin e vijës së komandës", duket se nuk ndikon asgjë. Vini re në anën e majtë, drejtoria aktuale përmban skedarin.cpp. Në të djathtë mund të më shihni duke përpiluar kodin dhe pastaj duke e ekzekutuar atë nga matlab. Lexoni skedarin në redaktuesin tuaj të tekstit (për shembull fletore në dritare), është shumë mirë e dokumentuar dhe vetë -shpjeguese, do të jeni në gjendje të bëni pothuajse gjithçka që ju nevojitet duke ndjekur konventat në kod (dmth. Kopjimi dhe ngjitja e tij dhe bërja modifikime të lehta) ################################################# ######################## …… … SHOTNIM …….. për shkak të disa redaktimeve të bezdisshme automatike që bëjnë udhëzimet, kodi siç shihet faqja tjetër NUK DO T W PUNOJ, DUHET T TO SHKARKONI DOSJEN që kam bashkangjitur në vend që ta kopjoni dhe ngjisni këtë. #################################################### #######################

Hapi 2: Ky është Kodi, MOS KOPJONI DHE PASTE

Ky është Kodi, MOS KOPJONI DHE PASTE
Ky është Kodi, MOS KOPJONI DHE PASTE

#################################################### ##################### …….. SHOTNIM ……..për shkak të disa redaktimeve të bezdisshme automatike që bëjnë instruksionet, kodi siç shihet në këtë faqe NUK do të PUNONI, DUHET TOW SHKARKONI DOSJEN që kam bashkangjitur në vend që ta kopjoni dhe ngjisni këtë. #################################### ######################################## // Kjo është shkruar në c ++ nga leevonk // është kod për një skedar matlab mex // kodi do të marrë një vlerë numerike dhe do të nxjerrë dy vlera numrash // dy numrat dalës llogariten nga numri hyrës // kodi gjithashtu do të nxjerrë një vlerë vargu // kodi do të shtypni gjithashtu "përshëndetje botë"#përfshini "mex.h" void mexFunction (int nlhs, mxArray *plhs , int nrhs, mxArray *prhs ) {// ############# ############################## // #######-print "hello world"-### ######### // ######################################### ### mexPrintf ("Përshëndetje botë"); // ####################################### ##### // ########-Merrni gjëra nga Matlab-######### // ################# ###########################/ * deklaroni një variabël të grupit për të mbajtur vales hyrëse*/double* InValues;/* merrni vlerat e dërguara nga matlab*/InValues = mxGetPr (prhs [0]);/* për të përdorur këto vlera që janë dërguar nga matlab, bëni InValues [0], InValue [1], etj sipas numrit të vlerave që ka. Vlerat InValues do të përdoren më poshtë */// ######################################### ## // ########-Ktheni një grup numrash-######### // #################### #######################/ * deklaroni grupin që do të dërgohet në matlab (* e bën atë një grup) */double * OutValues;/ * Krijoni/ndani argumentin e kthimit, një matricë 1x2 (1 rresht 2) për slotin e parë të grupit të kthimit (plhs [0]) */plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Merrni treguesin në argumentin e kthimit */OutValues = mxGetPr (plhs [0]); / * caktoni vlera në OutValues të cilat do të qëndrojnë në vendin e parë të grupit të kthimit, këtu ne po përdorim InValues për të kompjuterizuar OutValues */OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ############################################# // ###########-Ktheni një varg-############# // ################## ##########################/* deklaro variablin e vargut që do të dërgohet në matlab*/char* str;/* caktoj një vlerë string */str = "byebye";/ *vendosni vargun në slotin e dytë të vargjeve të kthimit (plhs [1]) */plhs [1] = mxCreateString (str); // ########## ################################## // ############-kthim më shumë gjëra-############ // ################################# ############/ * për të kthyer më shumë sende, ndiqni rregullat e përgjithshme të mësipërme, por vendosini gjërat në lojëra elektronike të tjera plhs, plhs [somenumber] */}

Hapi 3: Nëse për çfarëdo arsye nuk përpilohet

Nëse për çfarëdo arsye nuk përpilohet
Nëse për çfarëdo arsye nuk përpilohet

Nëse për çfarëdo arsye nuk përpilohet (duhet, funksionon mirë në kompjuterin tim) shihni këto burime, ato janë aty ku kam mësuar. Ata kanë gabime të vogla (përdorni disa gramatika të vjetra, jofunksionale, etj), por nëse shkoni para dhe prapa midis të dyve, duhet të jeni në gjendje të kapni së bashku diçka që funksionon. Http://web.ccr.jussieu.fr/ccr/ Dokumentacioni/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/

Recommended: