Big Issue en R2012b

BIG BIG issue R2012b – Windows XP

EDIT du 19 Décembre-2012 bug corrigé dans la Prerelase 2013a

Alors si vous êtes en Windows XP Service Pack 3 et que vous avez téléchargé la R2012b , attention attention! Je crois avoir trouvé le bug du siècle avec EXIST après un UIGETFILE!

Un truc de taré avec un code simple à tester sur n’importe quelle machine avec la R2012b installée.
Les fichiers trademarks.txt et patents.txt étant shippés avec tourtes les releases MATLAB.

% go in a folder outside ML path
cd(tempdir)

% exist is going to return 0 (normal)
exist('trademarks.txt')
exist('patents.txt')

% select any text file
uigetfile(fullfile(matlabroot,'*.*'),'select any txt file')

% here is the BUG
% exist now returns 2 !!!
exist('trademarks.txt')  
exist('patents.txt')

% but now try which('trademarks.txt') or edit('trademarks.txt') !!

Bug reproduit plusieurs fois sur plusieurs machines Windows XP.
Dans toutes les autres versions de MATLAB exist retourne comme attendu ZERO.
Sous Linux 12b le code raussi retourne ZERO.

Moi j’ai eu ce souci avec des MAT-files qui n’étaient pas sur mon path … alors vous voyez le truc : MATLAB vous dit que le fichier existe parce via un uigetfile il l’a vu , mais ensuite vous ne pouvez rien faire avec ce fichier : ni l’éditer , ni l’effacer , ni appender des data … bref bug bug bug!!!!

Lire la suite

filemarker le retour

Rappelez vous cet article Exemples faux de la doc où je remontais le fait que la doc de filemarker était erronée depuis la R2006b. Je disais également que j’avais remonté cette erreur au support de TMW.

Bon beh en 12b c’est un peux mieux mais ce n’est pas encore ça !!!
voivi ce qu’on peut lire dans la doc 12b :

You can use the following command on any platform to get the help text for the local function pdeodes defined in pdepe.m:
helptext = help([‘imwrite‘ filemarker ‘validateSizes’])

Ok l’exemple marche bien cette fois ci … mais par contre la phrase juste avant n’ a pas été mise à jour , ça parle toujours de pdepe …

R2012b alive !

Elle est sortie un jour assez particulier le 11 Septembre . Voici les nouveautés:

Nouvelles Fonctionnalités R2012b

Sans aucun rapport , vous aurez noté le nouveau look du blog. La transition ne s’est pas bien passée comme plusieurs d’entre vous me l’ont fait remarquer . Les articles qui étaient écrits sur plusieurs pages n’apparaissent plus. En effet seule la première page est lisible
Par exemple cet article Ordre de l’alphabet n’a plus aucun sens vu qu’on n’a pas la réponse qui normalement apparaissait dans la page 2. …

… sur le forum : Nouveau système de blogs de Developpez.com on m’a dit il y a quelques jours que ce problème devrait bientôt être réglé.
Désolé pour ce désagrément.

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