2010-11-27 30 views
2

Salut Je voulais savoir comment utiliser MATLAB comme solveur externe à partir d'un programme C. Spécifiquement dans mon code je souhaite de résoudre plusieurs systèmes linéaires de la forme Ax = b.Interfacer MATLAB avec les programmes C/C++

J'ai entendu dire que, pour aller dans l'autre sens, appeler des fonctions C dans une routine MATLAB, on utilise des fichiers MEX. Mais je ne suis pas vraiment sûr de savoir comment utiliser les fichiers Mex non plus.

Merci

+1

duplication possible de [Comment appeler le code MATLAB à partir de C?] (Http://stackoverflow.com/questions/1513583/how-to-call-matlab-code-from-c) – gnovice

Répondre

0

Vous pouvez utiliser le moteur matlab comme le souligne Lagerbaer. Cependant, parfois, il peut être pratique d'appeler simplement le style de ligne de commande matlab. Je l'utilise souvent quand je ne veux pas jouer avec mxArrays etc, ou quand la quantité de code MATLAB qui a besoin d'être exécutée devient vraiment importante. Pseudocode:

WriteArrayInMFormat("in.m", myInputNumbers); 
LaunchProcess("matlab", "-nodesktop -r \"myFunction('in.m')\" -logfile out.m"); 
ReadArrayInMFormat("out.m", myResult); 

Pour moi, cela est particulièrement utile pour tester les choses: au lieu d'avoir à recompiler le programme C/C++ à chaque fois que je change quelque chose, je demande que toutes les modifications dans le fichier myFunction.m. À ce stade, je n'ai même pas besoin du programme C, à la place tout peut être testé dans Matlab.

1

En fait, les fichiers MEX vous permettent d'inclure du code C dans les programmes Matlab, par exemple si vous souhaitez utiliser des bibliothèques externes C dans Matlab.

Ce que vous voulez faire est d'utiliser le moteur Matlab: http://www.mathworks.com/help/techdoc/matlab_external/f29148.html

Comme alternative, vous pouvez utiliser les bibliothèques d'algèbre linéaire qui sont écrits purement en C, comme LAPACK et BLAS. (www.netlib.org)

+0

J'avais déjà vu ce lien et j'ai suivi les commandes qu'ils ont mentionnées ... Mais ils n'ont pas fonctionné pour moi .... 2 questions: – smilingbuddha

+0

1) Est-ce que MATLAB doit être ouvert pour que le code C utilise MATLAB ou est-ce que MATLAB démarre directement? – smilingbuddha

+0

2) Comment compiler le code: Plus précisément, que dois-je écrire dans le Makefile? J'utilise Ubuntu 10.04 – smilingbuddha