Comment compiler un programme Matlab?

Extrait du cours comment compiler un programme Matlab?

1- Introduction
Le compilateur MATLAB génère un code source C à partir d’une fonction MATLAB. Le code C généré par le compilateur MATLAB peut être: soit un code source C pour construire des fonctions MATLAB compilées (’MEX-files’). soit un code source C pour combiner avec d’autres modules pour former une application externe qui puisse fonctionner sans MATLAB.
2- Pourquoi compiler des fonctions MATLAB ?
Il y a au moins trois bonnes raisons pour compiler une fonction MATLAB:
Pour augmenter la vitesse
Pour cacher le code source pour diffuser vos travaux et éviter que votre code soit modifié.
Pour créer une application indépendante de MATLAB.
Un code C compilé tourne plus vite que son équivalent en MATLAB car :
Un programme compilé tourne plus vite qu’un programme interprété.
Un code C contient des données de types plus simple. Pour MATLAB toutes les données sont des matrices (des tableaux).
MATLAB vérifie la taille des tableaux à chaque affectation d’élément ce que l’on peut eviter de faire en C.
MATLAB doit ré-allouer de la mémoire en cours d’exécution la ou en C on peut l’eviter.
3 – Création d’une fonction MATLAB compilée ’MEX-files’
a) Mécanisme de base
Le compilateur MATLAB ’mcc’ transforme une fonction MATLAB en code source C qui est ensuite compilé par l’outil ’cmex’. Celui-ci génère un code compilé (avec comme extension ’.mexrs6’) de la fonction qui sera automatiquement utilisé à la place de la fonction MATLAB correspondante.
Soit la fonction MATLAB suivante ’carre1’ qui va nous servir d’exemple:
function mat=carre1(n);
% calcul test
for i=1:n
mat=sqrt(i)*i;
Pour compiler on tape sous MATLAB :
>> mcc carre1.m
On obtient un code source C ’carre1.c’ et un exécutable ’carre1.mexrs6’ qui sera utilisé à la place de ’carre1.m’. Ces deux fichiers se trouve dans le répertoire courant. L’utilisation de l’outil ’cmex’ est transparent pour l’utilisateur.
b) Optimisation
Pour optimiser une fonction MATLAB on peut supprimer :
la vérification du dimensionnement des tableaux: option ’-i’. (pas de vérifcation en cas de debordement de tableau) spécifier qu’il n’y a pas de variables du type complexe dans votre fonction, si c’est le cas bien sur ! option ’-r’ Essayons ces options :
>> mcc -ri carre1
4 – Création d’une application externe indépendante de MATLAB.
a) Mécanisme de base
Si l’on invoque le compilateur MATLAB avec la bonne option ’mcc -e’, celui-ci génère un code C qui peut être intégré dans vos propres applications C. Après la compilation de votre application C à l’aide de l’outil ’mccbuild’ les différents programmes objet sont linkés avec les librairies suivantes :
’MATLAB Math built-In Library’ qui contient la version compilée de la plupart des routines mathématiques internes de MATLAB.
’MATLAB Math Toolbox Library’ qui contient la version compilée des routines mathématiques externes de MATLAB (script).
’MATLAB Compiler Library’ qui contient des routines spéciales pour la manipulations de certaines structures de données.
’ANSI C Math library’ librairie mathématique standard fourni par le constructeur de la machine.
Vous obtenez alors un code exécutable sur toutes les plate-formes IBM RS/6000 du Centre.
Voyons un exemple, reprenons la fonctions ’carre2.m’. Pour générer le code C approprié on tape :
>> mcc -e carre2.m
On obtient un programme C ’carre2.c’ qui peut être intégré dans un programme C externe.
Si on a écrit un programme C ’main.c’ qui utilise la fonction ’carre2’ on compilera le tout en tapant sous UNIX sur Bach:
$ mccbuild -o main main.c carre2.c
b) Ecriture d’un programme principale en MATLAB
Pour éviter d’écrire un programme principale en C, on peut écrire la fonction ’main’ et la compiler. En C ’main’ est le nom de la fonction principale.
Par exemple :
function h=main
% juste un calcul, n’affiche rien
carre2(10000);

………..

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Comment compiler un programme Matlab? (63.47 KO) (Cours PDF)
Programme Matlab

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *