Table des matières:
- Étape 1: le code
- Étape 2: Ceci est le code, NE PAS COPIER ET COLLER
- Étape 3: Si, pour une raison quelconque, il ne compile pas
Vidéo: Créer un fichier Matlab MEX : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:10
Instructions sur la façon d'intégrer le code C compilé avec Matlab. MEX signifie MATLAB Executable. Les fichiers MEX sont des sous-programmes liés dynamiquement produits à partir du code source C ou Fortran qui, une fois compilés, peuvent être exécutés à partir de MATLAB de la même manière que les fichiers M MATLAB ou les fonctions intégrées. Les fonctions d'interface externe offrent des fonctionnalités pour transférer des données entre des fichiers MEX et MATLAB, et la possibilité d'appeler des fonctions MATLAB à partir de code C ou Fortran. Ici, je vais vous montrer tout ce dont vous avez besoin pour créer rapidement un fichier mex utile. besoin:= un éditeur de texte= matlab 6.1 ou supérieur (les versions antérieures peuvent faire des fichiers mex aussi mais un format légèrement différent) = matlab a son propre compilateur c qui l'accompagne, mais j'ai utilisé le compilateur visual c++ parce que je l'avais.
Étape 1: le code
téléchargez le fichier que j'ai joint: mextest1p0.cpp
cpp signifie c++ ……… Voici ce que fait le code:……… il prend un numéro que vous lui envoyez depuis l'invite de commande matlab. Il imprime "hello world" dans matlab, il renvoie deux arguments à matlab, un tableau de nombres à deux éléments et une chaîne le premier élément du tableau de nombres renvoyé est 1 + le nombre que vous lui avez envoyé le deuxième élément du tableau de nombres renvoyé est 2 + le numéro que vous lui avez envoyé ………. Voici comment l'implémenter:………… enregistrez le fichier sur votre ordinateur démarrez matlab naviguez dans matlab jusqu'au répertoire où se trouve le fichier puis suivez les instructions de compilation et d'exécution en haut du fichier.cpp. Je ne peux pas écrire ces instructions ici car instructables édite automatiquement les commandes et les fait apparaître de manière incorrecte. Dans l'image ci-dessous, vous pouvez voir le code fonctionner. Ne vous inquiétez pas de l'"avertissement de la ligne de commande", cela ne semble rien affecter. Remarquez sur le côté gauche, le répertoire courant contient le fichier.cpp. Sur la droite, vous pouvez me voir compiler le code puis l'exécuter à partir de matlab. Lisez le fichier dans votre éditeur de texte (par exemple le bloc-notes dans Windows), il est très bien documenté et explicite, vous pourrez faire presque tout ce dont vous avez besoin en suivant les conventions du code (c'est-à-dire le copier-coller et faire légères modifications) ################################################ ######################## …….. REMARQUE…….. en raison de certaines auto-éditions ennuyeuses que instructables fait, le code comme on le voit sur le page suivante NE FONCTIONNERA PAS, vous DEVEZ TÉLÉCHARGER LE FICHIER que j'ai joint au lieu de le copier-coller. ##################################################### ########################
Étape 2: Ceci est le code, NE PAS COPIER ET COLLER
##################################################### ####################…….. REMARQUE……..en raison de certaines auto-éditions ennuyeuses qu'instructables fait, le code comme vu sur cette page NE SERONT PAS TRAVAILLEZ, vous DEVEZ TÉLÉCHARGER LE FICHIER que j'ai joint au lieu de le copier-coller.################################## ########################################//Ceci a été écrit en c++ par leevonk// c'est un code pour un fichier matlab mex//le code prendra une valeur numérique et produira deux valeurs numériques//les deux nombres de sortie sont calculés à partir du nombre d'entrée//le code produira également une valeur de chaîne//le code aussi imprimer "hello world"#include "mex.h"void mexFunction(int nlhs, mxArray *plhs, int nrhs, mxArray *prhs) {//############## ##############################//########--print "hello world"--### ########//######################################## ###mexPrintf("Bonjour tout le monde");//###################################### #####//########--Obtenir des trucs de Matlab--##########//################ ############################/ * déclarer une variable de tableau pour contenir les valeurs entrantes */double* InValues;/* obtenir les valeurs envoyées depuis matlab */InValues = mxGetPr(prhs[0]);/* pour utiliser ces valeurs envoyées depuis matlab, faire InValues [0], InValue[1], etc selon le nombre de valeurs. Les InValues seront utilisées ci-dessous *///######################################## ##//########--Renvoyer un tableau de nombres--##########//################## ########################/* déclare le tableau qui sera envoyé à matlab (le * en fait un tableau) */double* OutValues;/ * Créer/allouer un argument de retour, une matrice 1x2 (1 ligne 2 colonnes) pour le premier emplacement du tableau de retour (plhs[0]) */plhs[0]=mxCreateDoubleMatrix(1, 2, mxREAL); /* Récupère le pointeur vers l'argument de retour */OutValues = mxGetPr(plhs[0]); /* attribuer des valeurs aux OutValues qui résideront dans le premier emplacement du tableau de retour, ici nous utilisons les InValues pour calculer les OutValues */OutValues[0] = InValues[0] + 1;OutValues[1] = InValues[0] + 2;//############################################// ##########--Renvoyer une chaîne--##############//################## ############################/* déclare la variable chaîne à envoyer à matlab */char* str;/* affecte une valeur au string */str = "byebye";/* place la chaîne dans le second slot du tableau de retour (plhs[1]) */plhs[1]=mxCreateString(str);//########## ##################################//###########--revenir Plus de matériel--############//################################ ############/* pour renvoyer plus de choses, suivez les règles générales ci-dessus mais placez les choses dans d'autres emplacements plhs, plhs[somenumber] */ }
Étape 3: Si, pour une raison quelconque, il ne compile pas
Si, pour une raison quelconque, il ne compile pas (il devrait fonctionner correctement sur mon ordinateur), consultez ces ressources, c'est de là que j'ai appris. Ils ont de petits défauts (l'utilisation d'une vieille grammaire non fonctionnelle, etc.) mais si vous faites des allers-retours entre les deux, vous devriez pouvoir concocter quelque chose qui fonctionne. Documentation/Calcul/matlab5v11/docs/00009/009a1.htmhttps://cnx.org/content/m12348/latest/
Conseillé:
Comment créer un fichier exe : 3 étapes
Comment créer un fichier exe : Bonjour, je vais vous apprendre à créer un fichier exécutable. (également connu sous le nom de fichiers.exe) Cela ne nécessite aucun codage. Il suffit de forger l'installateur. Des liens seront fournis ici : InstallForge Donc, sans plus tarder je vais vous apprendre à faire un fichier.exe
Convertissez (à peu près) n'importe quel fichier multimédia en (à peu près) n'importe quel autre fichier multimédia gratuitement ! : 4 étapes
Convertir (à peu près) n'importe quel fichier multimédia en (à peu près) n'importe quel autre fichier multimédia gratuitement ! : Mon premier instructable, bravo ! est plus universel, comme.wmv ou.mov.J'ai recherché d'innombrables forums et sites Web, puis j'ai trouvé un programme appelé
Comment créer un fichier batch matriciel : 3 étapes
Comment créer un fichier batch Matrix : Ce fichier batch donnera des nombres verts aléatoires qui ressemblent à l'arrière-plan de "The Matrix", il n'a vraiment aucun intérêt, sauf pour avoir l'air cool
Créer un fichier PDF : 5 étapes
Créer un fichier PDF : à notre époque moderne, nous utilisons du matériel informatique plus que quiconque ne le croit. Nous envoyons des messages, transférons des documents et présentons des idées à des milliers de kilomètres de notre emplacement prévu en un clin d'œil. Le plus commun d'entre eux, élec
Comment créer un GIF animé à partir d'un fichier vidéo en utilisant uniquement un logiciel gratuit : 4 étapes
Comment créer un GIF animé à partir d'un fichier vidéo en utilisant uniquement un logiciel gratuit : pour ceux d'entre vous qui ne connaissent pas, un GIF est le format d'image le plus couramment utilisé pour prendre en charge plusieurs images dans un diaporama ou une animation. en d'autres termes, vous pouvez mettre de courtes vidéos où normalement seules les images vont. J'ai voulu faire un GIF à partir d'un clip vidéo