Përmbajtje:
- Hapi 1: Kodi
- Hapi 2: Ky është Kodi, MOS KOPJONI DHE PASTE
- Hapi 3: Nëse për çfarëdo arsye nuk përpilohet
Video: Bërja e një skedari Matlab MEX: 3 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:30
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
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
#################################################### ##################### …….. 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 (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:
(2) Fillimi për të bërë një lojë - Bërja e një ekrani spërkatës në Unity3D: 9 hapa
(2) Fillimi për të bërë një lojë - Krijimi i një spërkatjeje në Unity3D: Në këtë Instructable do të mësoni se si të bëni një ekran të thjeshtë spërkatjeje në Unity3D. Së pari, ne do të hapim Unitetin
Bërja e këngëve me një Arduino dhe një motor DC: 6 hapa
Marrja e këngëve me një Arduino dhe një motor DC: Një ditë tjetër, ndërsa po shfletoja disa artikuj rreth Arduino, pashë një projekt interesant i cili përdorte motorë stepper të kontrolluar nga Arduino për të krijuar melodi të shkurtra. Arduino përdori një kunj PWM (Modulimi i Gjerësisë së Pulsit) për të drejtuar motorin stepper
Bërja e një PCB me dy anë me një printer 3D: 7 hapa (me fotografi)
PCB me dy anë duke bërë një printer 3D: Unë do të përpiqem të shpjegoj krijimin e një PCB të dyanshëm të një ruteri izolimi me ndihmën e një printeri të modifikuar 3d. Kjo faqe më frymëzoi të përdor printerin tim 3d për prodhimin e PCB. Në fakt, metoda e përshkruar në atë faqe funksionon mjaft mirë. Nëse ndiqni t
Bërja e Rangefinder duke përdorur një lazer dhe një aparat fotografik: 6 hapa
Bërja e Rangefinder duke përdorur një lazer dhe një aparat fotografik: Unë aktualisht jam duke planifikuar disa punë të brendshme për pranverën e ardhshme, por pasi sapo bleva një shtëpi të vjetër nuk kam ndonjë plan shtëpie. Fillova të mas distancat mur me mur duke përdorur një vizore, por është i ngadalshëm dhe i prirur ndaj gabimeve. Mendova të blija një gamë të gjerë
Bërja e një kontrolluesi të lirë të vesës duke përdorur një zbehës LED: 3 hapa
Bërja e një kontrolluesi të lirë të vesës duke përdorur një zbehës LED: Pas lidhjes së shkurtër të një tharëse flokësh 12 Volt të cilën e kam përdorur për parandalimin e vesës në një yll para disa muajsh, mendova se ishte koha për të marrë një kontrollues të vërtetë të vesës dhe një ngrohës vesa për qëllimin tim . Një kontrollues mesatar i vesës kushton më shumë se 100 Euro (ose SHBA D