Sommario:
- Passaggio 1: il codice
- Passaggio 2: questo è il codice, NON COPIARE E INCOLLARE
- Passaggio 3: se per qualsiasi motivo non viene compilato
Video: Creare un file MEX Matlab: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:05
Istruzioni su come integrare codice C compilato con Matlab. MEX sta per eseguibile MATLAB. I file MEX sono subroutine collegate dinamicamente prodotte dal codice sorgente C o Fortran che, una volta compilati, possono essere eseguiti da MATLAB allo stesso modo dei file M MATLAB o delle funzioni integrate. Le funzioni dell'interfaccia esterna forniscono funzionalità per trasferire dati tra file MEX e MATLAB e la possibilità di chiamare funzioni MATLAB da codice C o Fortran. Qui ti mostrerò tutto ciò di cui hai bisogno per creare rapidamente un utile file mex. bisogno: = un editor di testo = matlab 6.1 o versioni successive (le versioni precedenti possono fare anche file mex ma in un formato leggermente diverso) = matlab ha il proprio compilatore c che viene fornito con esso, ma ho usato il compilatore visual c ++ perché ce l'avevo.
Passaggio 1: il codice
scarica il file che ho allegato: mextest1p0.cpp
cpp sta per c++ ………Questo è ciò che fa il codice:……… ci vuole un numero che gli invii dal prompt dei comandi di matlab. Stampa "ciao mondo" in matlab restituisce due argomenti a matlab, un array di numeri di due elementi e una stringa il primo elemento dell'array di numeri restituito è 1 + il numero che gli hai inviato il secondo elemento dell'array di numeri restituito è 2 + il numero che hai inviato ………. Ecco come implementarlo:………… salva il file sul tuo computer avvia matlab naviga in matlab fino alla directory in cui si trova il file quindi segui le istruzioni di compilazione ed esecuzione nella parte superiore del file.cpp. Non posso scrivere queste istruzioni qui perché istruibili modifica automaticamente i comandi e li fa apparire in modo errato. Nell'immagine qui sotto puoi vedere il codice funzionante. Non preoccuparti per il "avviso della riga di comando", non sembra avere effetto su nulla. Notare sul lato sinistro, la directory corrente contiene il file.cpp. Sulla destra puoi vedermi compilare il codice e poi eseguirlo da matlab. Leggi il file nel tuo editor di testo (ad esempio il blocco note in Windows), è molto ben documentato ed esplicativo, sarai in grado di fare quasi tutto ciò di cui hai bisogno seguendo le convenzioni nel codice (cioè copiandolo e incollandolo e facendo lievi modifiche) ############################################## ######################## …….. NOTA…….. a causa di alcuni fastidiosi auto-editing che fanno, il codice come visto sul pagina successiva NON FUNZIONA, DEVI SCARICARE IL FILE che ho allegato invece di copiare e incollare questo. ################################################# ######################
Passaggio 2: questo è il codice, NON COPIARE E INCOLLARE
################################################# #####################…….. NOTA……..a causa di qualche fastidioso auto-editing che fa interactables, il codice come visto in questa pagina NON VERRÀ FUNZIONA, DEVI SCARICARE IL FILE che ho allegato invece di copiare e incollare questo.################################ ######################################//Questo è stato scritto in c++ da leevonk// è il codice per un file matlab mex//il codice prenderà un valore numerico e produrrà due valori numerici//i due numeri di output sono calcolati dal numero di input//il codice produrrà anche un valore stringa//il codice sarà stampa anche "hello world"#include "mex.h"void mexFunction(int nlhs, mxArray *plhs, int nrhs, mxArray *prhs) {//############# ############################//#######--stampa "ciao mondo"--### #########//###################################### ###mexPrintf("Ciao mondo");//#################################### #####//########--Ricevi roba da Matlab--#########//################ ##########################/ * dichiarare una variabile array per contenere i valori in entrata */double* InValues;/* ottenere i valori inviati da matlab */InValues = mxGetPr(prhs[0]);/* per utilizzare questi valori inviati da matlab, eseguire InValues [0], InValue[1], etcsecondo quanti valori ci sono. Gli InValues verranno utilizzati di seguito *///####################################### ##//########--Restituisci un array di numeri--#########//################### #######################/* dichiara l'array che verrà inviato a matlab (il * lo rende un array) */double* OutValues;/ * Crea/alloca argomento di ritorno, una matrice 1x2 (1 riga 2 colonna) per il primo slot dell'array di ritorno (plhs[0]) */plhs[0]=mxCreateDoubleMatrix(1, 2, mxREAL); /* Ottieni il puntatore all'argomento di ritorno */OutValues = mxGetPr(plhs[0]); /* assegna valori a OutValues che risiederanno nel primo slot dell'array di ritorno, qui stiamo usando InValues per computer OutValues */OutValues[0] = InValues[0] + 1;OutValues[1] = InValues[0] + 2;//##########################################// ###########--Restituisci una stringa--#############//################# ##########################/* dichiara la variabile stringa da inviare a matlab */char* str;/* assegna un valore al string */str = "arrivederci";/* inserisci la stringa nel secondo slot dell'array di ritorno (plhs[1]) */plhs[1]=mxCreateString(str);//########## ##################################//###########--Restituzione più roba--############//################################ ############/* per restituire più cose, segui le regole generali sopra ma metti le cose in altri plhs slot, plhs[somenumber] */ }
Passaggio 3: se per qualsiasi motivo non viene compilato
Se per qualsiasi motivo non si compila (dovrebbe, funziona bene sul mio computer) vedi queste risorse, sono dove ho imparato. Hanno piccoli difetti (l'uso di una vecchia grammatica non funzionale, ecc.) Ma se vai avanti e indietro tra i due dovresti essere in grado di mettere insieme qualcosa che funzioni.https://web.ccr.jussieu.fr/ccr/ Documentazione/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/
Consigliato:
Come creare un file exe: 3 passaggi
Come creare un file exe: Ciao, ti insegnerò come creare un file eseguibile. (noto anche come file.exe) Questo non richiede alcuna codifica. Basta falsificare il programma di installazione. I collegamenti verranno forniti qui: InstallForge Quindi, senza ulteriori indugi, ti insegnerò come creare un file.exe
(2) Iniziare a creare un gioco - Creare una schermata iniziale in Unity3D: 9 passaggi
(2) Iniziare a creare un gioco - Creare una schermata iniziale in Unity3D: In questo Instructable imparerai come creare una semplice schermata iniziale in Unity3D. Per prima cosa, apriremo Unity
Come creare un file server utilizzando Raspberry Pi: 7 passaggi
Come creare file server utilizzando Raspberry Pi: Al giorno d'oggi è comune avere più computer in una casa con musica e video distribuiti tra di loro. Un altro modo per organizzare le tue cose è tenerle su un server centralizzato noto anche come FILE SERVER. In questo tutorial, creeremo un file server
Come creare un file batch Matrix: 3 passaggi
Come creare un file batch Matrix: questo file batch fornirà numeri verdi casuali che assomigliano allo sfondo di "The Matrix" non ha davvero senso se non per sembrare cool
Come creare un'unità flash che copia i file degli utenti in modo silenzioso e automatico: 7 passaggi
Come creare un'unità flash che copia i file degli utenti in modo silenzioso e automatico: ****** QUESTO ISTRUZIONI È SOLO A SCOPO INFORMATIVO È ILLEGALE COPIARE I FILE DI QUALCUNO SENZA IL LORO PERMESSO NON SONO RESPONSABILE DI QUALSIASI COSA CHE PU O NON PU ACCADERE SE QUESTO LE INFORMAZIONI SONO UTILIZZATE IN MODO IMPROPRIO **************** Come costruire un