Archives pour la catégorie Best-of des commandes MATLAB utiles

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.

Doc en R2012b

Parce que vous n’aimez pas le nouveau format HTML de la doc en R2012b, parce que vous trouvez que c’est lent ou que ça gèle votre MATLAB , vous avez envie de retrouver l’ancien format HTML .

Voici la commande magique :

com.mathworks.mlwidgets.html.HtmlComponentFactory.setDefaultType('HTMLRENDERER')

Lire la suite

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

Optimiser les performances graphiques

Le 15 mai 2012 je donnais une astuce pour accélérer la création de plusieurs figures

Aujourd’hui je vais vous présenter une astuce pour accélérer le rafraichissement de vos graphiques.

J’ai trouvé un super lien dans la doc MATLAB à ce sujet: Optimizing Graphics Performance

A un moment donné un des conseils donné est « Setting All Modes to Manual« . Et un tableau plus bas donne en effet toutes les propriétés de l’axe à modifier.
Et là je me suis dit « c’est con qu’il n’y ait pas un code tout fait pour le faire! »

Et beh en fait si!
Il suffit de lire la section plus bas : « Update the Object’s Data » qui fournit un exemple et un lien pour l’éditer.

edit ([docroot '/techdoc/creating_plots/examples/doc_perfex']);

voir la sous function ManAxMode

Donc comme conseillé dans la page on fait d’avoir:

figure('Renderer','painters')

puis on utilise cette fonction :

    % This function sets most axes mode properties to manual
    function ManAxMode(h)
    % Do not set CameraViewAngleMode, DataAspectRatioMode,
    % and PlotBoxAspectRatioMode to aviod exposing a bug
    pn = {'ALimMode',...
        'CameraPositionMode','CameraTargetMode',...
        'CameraUpVectorMode','CLimMode',...
        'TickDirMode','XLimMode',...
        'YLimMode','ZLimMode',...
        'XTickMode','YTickMode',...
        'ZTickMode','XTickLabelMode',...
        'YTickLabelMode','ZTickLabelMode'};
    for k = 1:15
        pv(k) = {'manual'};
    end
    set(h,pn,pv)
    end

Et je confirme ça accélère grave !!

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

Suite de Conway

La Suite de Conway en MATLAB ça se programme comment?

Exemple : vous avez le vecteur input = [ 1 3 3 1 5 2 2]
Lorsqu’on lit cette suite mathématique :
il y a une fois le chiffre 1 -> 1 1
puis deux fois le chiffre 3 -> 2 3
puis une fois le chiffre 1 -> 1 1
puis une fois le chiffre 5 -> 1 5
puis deux fois le chiffre 2 -> 2 2
donc on cherche à obtenir : output = [1 1 2 3 1 1 1 5 2 2]