Besoin d un coup de pouce ... Matlab!

hollowdeadoss

Membre actif
29 Décembre 2009
168
9
Bonjour tout le monde,

Encore merci pour vos renseignements sur les differents topics que j ai pu creer et lire.
Je dois prendre une licence Matlab mais j'hesite entre prendre la licence sous Windows ou la licence sous Snow Leopard.

Je sais qu a priori tout ce qui est estanpille "Mathworks" devrait marcher mais j'utilise une toolbox (WAFO) gratuite, developpe par un laboratoire etranger.
Le probleme c est que si cette toolbox ne marche pas tres bien sous Snow Leopard je preferes prendre la licence sous Windows quitte a utiliser un PC juste pour cela.
Je fais tout mes travaux ou presque a l aide de cette toolbox et d'ailleurs j ai developpe quelques fonctions pour cette toolbox.

Si quelqu'un pouvait me renseigner je serai ravi!

La page de Wafo est accessible ici: http://www.maths.lth.se/matstat/wafo/(telechargeable via la page d accueil) .

Hollow
 
Je ne vois pas pourquoi ta Toolbox marcherai sur Matlab Windows et pas sur Matlab Mac OS X.
A part pour tes fichiers .Mex, ou il te sera sûrement nécesaire de les recompiler sur Mac OS X.
Sinon du moment que tu utilises bien la bonne version de Matlab sous Mac OS X (la même que celle que tu utilises avec ta Toolbox) ;)
 
Je ne vois pas pourquoi ta Toolbox marcherai sur Matlab Windows et pas sur Matlab Mac OS X.
A part pour tes fichiers .Mex, ou il te sera sûrement nécesaire de les recompiler sur Mac OS X.
Sinon du moment que tu utilises bien la bonne version de Matlab sous Mac OS X (la même que celle que tu utilises avec ta Toolbox) ;)

Justement, souvent deja sous Windows j'avais des messages d'erreur du type "erreur mexfile" et j ai peur d avoir le meme sous OS X ... La ils font tout avec un PC et la derniere version de Matlab.
Peut qu il y ait des incompatibilites!

Qu entends tu par recompiler?

Merci de ta reponse ;)
 
Pour le message "erreur mexfile" cela est normal, car les fichiers sources (en C, C++ ou fortran) des fichiers .Mex doivent être en général compilés via ton propre système d'exploitation pour que celui-ci puisse les utiliser.
Voici la liste des compilateurs supportés par la dernière version Matlab : http://www.mathworks.com/support/compilers/R2010a/index.html

Par exemple, tu charges le fichier source (en C par exemple) sous Matlab (qui doit impérativement se trouver dans le fichier d'installation Matlab) via la commande :

>> CopiedeTonFichier = [matlabroot '\...\NomDossier\NomFichier.c'];
>> copyfile(CopiedeTonFichier, '.');
>> mex -v NomFichier.c

à travers la dernière commande tu compiles via le compilateur gcc/g++ de ta bécanne le fichier C en .Mex.
A titre d'exemple sur mon MBP avec Matlab 2009b 64bit, j'obtient un fichier .meximac64 alors que sous Windows XP j'obtient un .mexw32.

Après plus qu'a utiliser ton .Mex :)

Plus d'infos : http://www.mathworks.com/support/tech-notes/1600/1605.html

Sinon je travaille sous Matlab 32bit 2008a Windows et Matlab 64bit sous MAC OS X j'ai aucun soucis avec ma toolbox maison crée à la base via Matlab 2007a sous Windows. :)

P.S : sous MAC OS X il te faudra Xcode pour obtenir le compilateur, Xcode qui est présent sur ton DVD d'installation MAC OS X (mais download la dernière version sur l'Apple Store plutôt, fortement conseillé même)...
 
Merci HAL ;)

Je vais regarder un peu tout ca car la ca me semble un peu flou tout ce que tu me dis :D
Perso quand j ai la toolbox je me sers directement des fichiers mais parfois ca plante et je m ennerve lol.
La peut etre que je vais pouvoir mieux comprendre tout ca.
Et puis si tu me dis que ta toolbox maison fonctionne parfaitement ca devrait le faire.

Par contre je me souviens plus ou est le CD d installation du MB Pro que j ai achete "tout fait". Je vais voir tout ca.

Encore merci ;)

Hollow
 
Merci HAL ;)

Je vais regarder un peu tout ca car la ca me semble un peu flou tout ce que tu me dis :D
Perso quand j ai la toolbox je me sers directement des fichiers mais parfois ca plante et je m ennerve lol.
La peut etre que je vais pouvoir mieux comprendre tout ca.
Et puis si tu me dis que ta toolbox maison fonctionne parfaitement ca devrait le faire.

Par contre je me souviens plus ou est le CD d installation du MB Pro que j ai achete "tout fait". Je vais voir tout ca.

Encore merci ;)

Hollow

Pour Xcode passe directememnt par ici : http://developer.apple.com/technology/xcode.html :)

Bon code ;)
 
En fait même quand je crée des fichiers .m je dois lorsque je passe par exemple sous OS les recompiler?
Ou ceci n'a rien à voir?

Merci pour le dernier lien au passage ;)
Là je regardes le lien sur les Mex-files. Je suis un peu perdu :rateau:

Et pour savoir quel version de Matlab prendre sous OS à savoir 32 ou 64 bits ça n'a aucune importance?

Encore merci Hal à moi le plaisir d'être sur un Mac même en travaillant!
 
les fichiers .m et .mex(-w32/-maci64) sont deux choses différentes. :hein:

Les premiers sont des fonctions Matlab (fmincon.m, mean.m, cov.m, etc. etc.) executées directement par Matlab. Les fichiers .m sont les formats par défaut de Matlab.
Maintenant lorsque tu executes une de ces fonctions, Matlab la compile une première fois (toi en tant qu'utilisateur tu ne t'aperçois de rien) en format binaire puis l'execute. Comme tout code (C/C++, Java, VBA, etc.) tu as une phase de compilation qui prémache le code en langage machine, c'est à dire binaire, avant de l'executer...

Donc pour en revenir à nos moutons, les fichiers .m sont compilés puis executer par Matlab.
Or il t'es possible de créer directement un fichier déja compilé, en format binaire donc, que Matlab execute par la suite. Ce sont des fichiers .mex(-w32/-maci64).

Mais tu peux également partir d'une fonction directement écrite en C/C++ ou bien Fortran pour créer un fichier binaire .mex(-w32/-maci64). Et c'est la que cela devient intéressant :D.

Je ne sais pas si tu as déja remarqué mais question temps d'execution, une boucle for sous Matlab c'est pas optimal (à part dans de rares cas si tu utilises la toolbox Parallel Computing, mais là on s'égare du sujet initial :D). Alors qu'en C++ les boucles for s'executent relativement très rapidement (question d'adressage de mémoire, toussa toussa). Donc par exemple si tu veux optimiser en temps d'execution une fonction Matlab (.m donc) qui execute un grand nombre de boucle for, tu réecris celle-ci en C++ (ou C ou Fortran) puis tu la compiles via la commande mex -v pour obtenir un fichier binaire .mex(-w32/-maci64) prémaché pour Matlab, héritant de la vitesse d'execution du C++ (ou C ou Fortran). Le second avantage des fichiers .mex(-w32/-maci64) c'est qu'ils sont impossibles à lire, donc si tu veux notamment protéger ta boîte à outil faite maison que tu as installé sur un ordinateur d'une tierce personne, c'est une solution ;).

Et pour savoir quel version de Matlab prendre sous OS à savoir 32 ou 64 bits ça n'a aucune importance?

Ooooh que si ça a de l'importance !
Concrètement en RAM ça nous donne :

- 32-bit Microsoft Windows XP, Windows Vista™ : 2 GB d'allocation autorisé.
- 32-bit Windows XP with 3 GB boot.ini / 32-bit Windows Vista : 3 GB d'allocation autorisé.
- 32-bit Linux® : ~3 GB d'allocation autorisé.
- 64-bit Windows XP, Macintosh® OS X, Linux / SunSolaris running 32-bit MATLAB ≤ 4 GB d'allocation autorisé.
- 64-bit Windows XP, Windows Vista, Linux, or Solaris running 64-bit MATLAB : 8 TB d'allocation autorisé.

Donc sous Snow leopard avec Matlab 64bit je peux créer des matrices qui prennent jusqu'à 8 Tetra Bytes de mémoire vive :eek: :eek: :D. Sous un OS de 32bit je suis limité à 3GB (chez moi j'explose très facilement les 3GB de limitation, c'est pourquoi j'ai une version 64bit ;)).

Bon, c'est l'heure du miam :o :p
 
Déjà un grand merci pour tes réponses.

Vu que je suis amené à faire de gros calculs et d'après ce que tu me dis avec Snow Leopard je peux passer en 64 bits pour plus de "souplesse" je penses prendre cette version de Matlab.

Je vais repenser au fait de réécrire certaines fonctions en C/C++ car j'explose souvent le temps de compilation :D
Là, je me pose la question suivante: comment à partir de la toolbox "maison/labo" que je veux utiliser (Wafo) je peux avoir des problèmes de "mex-files" alors que ce sont des programmes/fonctions Matlab?

On m'avait dit (pas dans ma langue natale donc bon j'ai pu mal comprendre) que mon problème venait de l'emplacement où je m'étais cette toolbox ou alors que les fonctions n'étaient pas faites pour telle ou telle version de Windows (par exemple sous Vista ça plantait beaucoup plus jusqu'à la dernière mise à jour de la toolbox).
Tu penses qu'il y a de cela ou pas du tout?
 
Déjà un grand merci pour tes réponses.

Vu que je suis amené à faire de gros calculs et d'après ce que tu me dis avec Snow Leopard je peux passer en 64 bits pour plus de "souplesse" je penses prendre cette version de Matlab.

Je vais repenser au fait de réécrire certaines fonctions en C/C++ car j'explose souvent le temps de compilation :D
Là, je me pose la question suivante: comment à partir de la toolbox "maison/labo" que je veux utiliser (Wafo) je peux avoir des problèmes de "mex-files" alors que ce sont des programmes/fonctions Matlab?

On m'avait dit (pas dans ma langue natale donc bon j'ai pu mal comprendre) que mon problème venait de l'emplacement où je m'étais cette toolbox ou alors que les fonctions n'étaient pas faites pour telle ou telle version de Windows (par exemple sous Vista ça plantait beaucoup plus jusqu'à la dernière mise à jour de la toolbox).
Tu penses qu'il y a de cela ou pas du tout?

As-tu les fichiers .c associés à tes .mex qui foirent ?
 
Nop.

En fait que je "telecharge" la toolbox je n'ai accès qu'à des fichiers .m donc pas accès aux fichiers mex ou .c

Bizarre, j'aimerai bien savoir comment ils ont fait pour créer cette toolbox. Ca se trouve c'est juste une suite de fonctions .m et basta?
Mais ça expliquerait pas pourquoi j'ai une erreur de mex files en lançant ces fonctions .m

Encore merci HAL.

Hollow
 
Si tu les as... dans le fichier source tu as 4 fichiers encodé en C et tous les autres en fortran ;)
Donc toutes ces fonctions peuvent êtres (et doivent) transformées en .mex afin d'optimiser les temps de calcul...
 
Si tu les as... dans le fichier source tu as 4 fichiers encodé en C et tous les autres en fortran ;)

Hum ... je vois pas. Je vois que les .m

Sinon voici un message qu'il y a sur la page d'accueil de la "toolbox":
Matlab has changed the way mex-files work in Matlab2007a. The precompiled mex-files included in WAFO do only work for Matlab2006 and below. Thus the files has to be compiled again.
The compiled mexfiles for matlab 2007a and PC-platform can be downloaded here.
Unzip it to a suitable folder and move the following mexfiles:
csort to directory WAFO/misc
findcross, findrfc to WAFO/onedim
and the remaining mexfiles to the WAFO/trgauss/private.
If the functions still do not work, try to rename the extension from ".mexw32" to ".dll" for all these compiled mexfiles.


Alors ça confirme bien qu'il y a des fichiers mex mais pourquoi ici ils précisent la plateforme?
D'ailleurs j'ai vu sur la même page la même toolbox pour Ubuntu/Linux.
:mouais:

Au passage sympa la photo du Big Lebowski si je ne me trompes pas ^^
 
Hum ... je vois pas. Je vois que les .m

Sinon voici un message qu'il y a sur la page d'accueil de la "toolbox":
Matlab has changed the way mex-files work in Matlab2007a. The precompiled mex-files included in WAFO do only work for Matlab2006 and below. Thus the files has to be compiled again.
The compiled mexfiles for matlab 2007a and PC-platform can be downloaded here.
Unzip it to a suitable folder and move the following mexfiles:
csort to directory WAFO/misc
findcross, findrfc to WAFO/onedim
and the remaining mexfiles to the WAFO/trgauss/private.
If the functions still do not work, try to rename the extension from ".mexw32" to ".dll" for all these compiled mexfiles.


Alors ça confirme bien qu'il y a des fichiers mex mais pourquoi ici ils précisent la plateforme?
D'ailleurs j'ai vu sur la même page la même toolbox pour Ubuntu/Linux.
:mouais:

Au passage sympa la photo du Big Lebowski si je ne me trompes pas ^^

Ce message précise que les .mex fournis par défaut avec ta toolbox ont été compilés avec Matlab 2006. Les .mex compilés avec Matlab 2007 sont téléchargeables aussi... Selon les versions de Matlab, la liste des compilateurs changent...

Download ta toolbox ici (wafo-2.1.1.zip) : http://www.maths.lth.se/matstat/wafo/download/index.html

Puis ouvre le dossier source, et la tu as normalement : csort.c, ..., ..., alanpab22.f ;)

Sinon le Duc c'est bien moi :D
 
Vraiment GRAND merci HAL ;)

Je vais pouvoir y aller plus tranquillement/sereinement car bon voir version "pcwin" ça rassure pas trop ^^

Mais surtout je vois qu'il faut que je m'intéresse plus à ce qui se passe "sans que je le saches" avec ces fichiers .c

Encore merci ;)

Hollow
 
  • J’aime
Réactions: HAL-9000
Vraiment GRAND merci HAL ;)

Je vais pouvoir y aller plus tranquillement/sereinement car bon voir version "pcwin" ça rassure pas trop ^^

Mais surtout je vois qu'il faut que je m'intéresse plus à ce qui se passe "sans que je le saches" avec ces fichiers .c

Encore merci ;)

Hollow

De rien, et si tu as un soucis, n'hesite pas à poster ici ;)

Bon courage avec le C :D :p