Archives pour la catégorie Tips and Tricks

Chut!

ou comment faire taire MATLAB ?!
J’avais écris un logiciel avec pleins de fprintf afin de pouvoir créer un log avec diary.
Evidemment ça ralentit le process le fait de faire afficher pleins de lignes dans le Command Window.
Là l’idée c’était de pouvoir ajouter une option qui fasse que les fprintf n’affichent rien.
J’aurais pu rajouter une checkbox dans l’interface que j’aurais appelée « verbosity » . Si cette checkbow n’était pas cochée , cela signifait que l’opérateur ne voulait rien voir à l’écran.
Mais bon vu que j’en avais plus de 3000 lignes de fprintf je n’avais pas envie de faire 300 if-test du style:

if verbosity % checkbox has value 1
fprintf('\n ...')
end

La solution est en fait toute simple et ne requière aucune modification de code … (solution page suivante ) Lire la suite

accumarray

En juillet 2012, j’ai ENFIN trouvé l’utilité d’utiliser accumarray… les boules pour un MATLAB geek ! Cette fonction a été introduite avec MATLAB 7.0 (R14) en même temps que les fonctions cast, intmax, intmin,…. donc il était temps de s’y coller.

Je m’étais même promis d’y arriver dans ce billet Mon premier arrayfun.

  • Exemple simple :

Cette matrice là par exemple 2 lignes et 3 colonnes :

B = [0 0 0
0 0 -13]

On pourrait l’écrire en une ligne en faisant

B(2,3) = -13

mais truc de fou on peut aussi l’écrire en faisant:

accumarray([2,3],-13)
  • Maintenant avec un exemple plus compliqué

Lire la suite

Compiler du Fortran sous Linux

Compiler du Fortran sous Linux m’a l’air beaucoup plus simple que sous Windows !

En revanche je me suis chopé l’erreur suivante:

    version `GFORTRAN_1.4′ not found

Voici l’erreur que j’ai eue en R2011b, R2012a et R2012b après avoir mexé avec succès :

/usr/local/MATLAB/R2012b/bin/glnxa64/../../sys/os/glnxa64/libgfortran.so.3: version `GFORTRAN_1.4′ not found

Lire la suite

Compiler du Fortran sous Windows (part2)

Suite de mon article Compiler du Fortran sous Windows il y a maintenant un bug report (très succinct à mon gout vu qu’il ne donne pas de solution) : In MATLAB 8.0 (R2012b), mex -setup cannont find Intel Visual Fortran Composer XE 2011 with Windows SDK 7.1 compiler on 32-bit Windows.

Compiler du Fortran sous Windows

Compiler du Fortran sous Windows :

Situation :
- Windows XP 32-bit
– 2 versions MATLAB R2011b et R2012b

Pour faire simple , sans le support technique de MathWorks, il est impossible de compiler par exemple l’exemple timestwo.F ([matlabroot ‘\extern\examples\refbook\timestwo.F’]). Donc un grand merci au gars qui m’a aidé!! … entre nous c’est un bug MATLAB qui est à la cause de tout ça ;)

Prérequis :
Avoir le compilateur Fortran qui va bien en R2011b et R2012b:
Intel Visual Fortran Composer XE 2011

Information qu’on retrouve sur le site du support :
compilateur 12b supporté
compilateur 11b supporté

La bonne nouvelle financière c’est qu’avoir Microsoft Windows SDK 7.1 est suffisant .
Une fois la trial téléchargée sur le site d’Intel , on peut commencer à mexer.

Lire la suite

Occurences dans un vecteur (suite)

Hier je vous montrais comment avec nnz calculer le nombre d’occurrences d’un nombre dans un vecteur:
A = [1 2 33 4 33 33 5 33 6 7 8 9]

La limitation de ce trick est lorsque le vecteur contient des NaN.

Exemple :

A = [1 2 33 4 33 33 5 33 6 7 8 9 NaN NaN]

en effet
nnz(A==NaN)
retourne zéro