Taula de continguts:
- Pas 1: el codi
- Pas 2: aquest és el codi, NO COPIEU I ENGUINEU
- Pas 3: si per qualsevol motiu no es compila
Vídeo: Creació d'un fitxer Matlab MEX: 3 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:16
Instruccions sobre com integrar el codi C compilat amb Matlab. MEX significa MATLAB Executable. Els fitxers MEX són subrutines enllaçades dinàmicament produïdes a partir del codi font C o Fortran que, quan es compilen, es poden executar des de MATLAB de la mateixa manera que els fitxers M de MATLAB o les funcions incorporades. Les funcions d’interfície externa ofereixen funcionalitat per transferir dades entre fitxers MEX i MATLAB i la possibilitat de trucar a funcions MATLAB des del codi C o Fortran. Aquí us mostraré tot el que necessiteu per fer ràpidament un fitxer mex útil. need: = un editor de text = matlab 6.1 o superior (les versions anteriors també poden fer fitxers mex però amb format lleugerament diferent) = matlab té el seu propi compilador de c que ve amb ell, però he utilitzat el compilador visual c ++ perquè el tenia.
Pas 1: el codi
descarregueu el fitxer que he adjuntat: mextest1p0.cpp
cpp significa c ++ ……… Això és el que fa el codi: ……… es necessita un número que l’envieu des del símbol del sistema matlab. Imprimeix "hola món" a matlab, retorna dos arguments a matlab, una matriu de dos elements i una cadena; el primer element de la matriu de números retornats és 1 + el número que li heu enviat; el segon element de la matriu de números retornat és 2 +. el número que li heu enviat ………. Aquesta és la manera d’implementar-lo: ………… deseu el fitxer a l’ordinador inicieu matlab navegueu a matlab fins al directori on es troba el fitxer i seguiu les instruccions de compilació i execució a la part superior del fitxer.cpp. No puc escriure aquestes instruccions aquí perquè les instruccions editen automàticament les ordres i les fan aparèixer incorrectament. A la imatge següent podeu veure el codi que funciona. No us preocupeu per l '"avís de línia d'ordres", sembla que no afecta res. Fixeu-vos a la part esquerra que el directori actual conté el fitxer.cpp. A la dreta em podeu veure compilant el codi i executant-lo des de matlab. Llegiu el fitxer de l’editor de text (per exemple, el bloc de notes al Windows), està molt ben documentat i s’explica per si mateix, podreu fer gairebé tot el que necessiteu seguint les convencions del codi (és a dir, copiant-lo i enganxant-lo i fent lleugeres modificacions) ###################################################. la pàgina següent NO FUNCIONARÀ, heu de descarregar el fitxer que he adjuntat en lloc de copiar-lo i enganxar-lo. ####################################################### #######################
Pas 2: aquest és el codi, NO COPIEU I ENGUINEU
####################################################### ###################### …….. NOTA …….. degut a una molesta autoedició que fan els instructables, el codi que es veu en aquesta pàgina NO FUNCIONA, HAU DE DESCARREGAR EL FITXER que he adjuntat en lloc de copiar-lo i enganxar-lo. #################################### ######################################## // va ser escrit en c ++ per leevonk // és codi per a un fitxer matlab mex // el codi prendrà un valor numèric i generarà dos valors numèrics // els dos números de sortida es calculen a partir del número d’entrada // el codi també generarà un valor de cadena // el codi també imprimiu "hola world" #include "mex.h" void mexFunction (int nlhs, mxArray * plhs , int nrhs, mxArray * prhs ) {// ############## ############################## // ####### - imprimeix "hola món" - ### ######### // ########################################### ### mexPrintf ("Hola món"); // ######################################### ##### // ######## - Obteniu coses de Matlab - ######### // ################## ########################### / * declareu una variable de matriu per contenir les vales entrants * / double * InValues; / * obteniu els valors enviats des de matlab * / InValues = mxGetPr (prhs [0]); / * per utilitzar aquests valors que s’envien des de matlab, feu InValues [0], InValue [1], etc segons quants valors hi ha. Els InValues s’utilitzaran a continuació * /// ########################################### ## // ######## - Retorna una matriu de números - ########## // ###################### ######################## / * declareu la matriu que s'enviarà a matlab (el * fa que sigui una matriu) * / doble * OutValues; / * Creeu / assigneu un argument de retorn, una matriu 1x2 (1 fila 2) per a la primera ranura de la matriu de retorn (plhs [0]) * / plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Obteniu el punter a l'argument de retorn * / OutValues = mxGetPr (plhs [0]); / * assigneu valors a OutValues que residiran a la primera ranura de la matriu de retorn; aquí estem utilitzant els InValues per a computar els OutValues * / OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // ############################################### // ########### - Retorna una cadena - ############# // // #################### ########################### / * declareu la variable de cadena que s'enviarà a matlab * / char * str; / * assigneu un valor al string * / str = "byebye"; / * introduïu la cadena a la segona ranura de les matrius de retorn (plhs [1]) * / plhs [1] = mxCreateString (str); // ########## ################################### // ############ - tornar més coses - ############ // #################################### ############# * * per tornar més coses, seguiu les regles generals anteriors, però poseu-les en altres espais de plhs, plhs [somenumber] * /}
Pas 3: si per qualsevol motiu no es compila
Si per qualsevol motiu no compila (hauria de funcionar bé al meu ordinador), veuen aquests recursos, aquí vaig aprendre. Tenen petits problemes (utilitzen alguna gramàtica antiga i no funcional, etc.), però si aneu i torneu entre tots dos, hauríeu de ser capaços de llançar alguna cosa que funcioni. Documentació / Calcul / matlab5v11 / docs / 00009 / 009a1.htmhttps://cnx.org/content/m12348/latest/
Recomanat:
Arduino com a ISP -- Grava fitxer hexadecimal a AVR -- Fusible a AVR -- Arduino com a programador: 10 passos
Arduino com a ISP || Grava fitxer hexadecimal a AVR || Fusible a AVR || Arduino com a programador: ……………………… SUBSCRIU-vos al meu canal de YouTube per obtenir més vídeos …….. Aquest article es tracta d’arduino com a isp. Si voleu penjar un fitxer hexadecimal o si voleu configurar el fusible a AVR, no necessiteu comprar cap programador, podeu fer
Com fer un fitxer Exe: 3 passos
Com fer un fitxer Exe: Hola, us ensenyaré a fer un fitxer executable. (també coneguts com a fitxers.exe) Això no requereix cap codificació. Només cal forjar l'instal·lador. Es proporcionaran enllaços aquí: InstallForge. Així doncs, sense més, us ensenyaré a crear un fitxer a.exe
Fitxer per lots: controls de moviment: 3 passos
Fitxer per lots: Controls de moviment: quan vaig buscar com crear controls de moviment a CMD no vaig trobar resultats precisos, així que vaig decidir fer els meus propis controls que funcionessin amb les tecles WASD per al moviment i les tecles 1234 per girar
Exportar un fitxer SVG a Fusion 360: 5 passos (amb imatges)
Exportar un fitxer SVG a Fusion 360: fa poc, un amic va comprar un tallador làser i em va preguntar com utilitzar Fusion 360 per exportar fitxers SVG. Vaig suggerir simplement exportar fitxers DXF, però resulta que la marca de làser que va comprar només accepta fitxers SVG. Aquest era el mateix problema que jo
Convertiu (només aproximadament) qualsevol fitxer multimèdia a (només aproximadament) qualsevol altre fitxer multimèdia de franc !: 4 passos
Converteix (només aproximadament) qualsevol fitxer multimèdia a (només aproximadament) qualsevol altre fitxer multimèdia de franc! és més universal, com ara.wmv o.mov. He buscat infinitat de fòrums i llocs web i després he trobat un programa anomenat