Créer une application 32-bit sous 64-bit

Etant passé dernièrement sous Windows 64-bit , je voulais être capable de pouvoir encore créer avec le MATLAB Compiler des exe pour les Windows 32-bits vu que c’est supporté.

  • Ce que dit la doc

Voilà ce qu’on peut lire sur la doc la plus récente en ligne de mcc

-win32 Run in 32-Bit Mode

Use this option to build a 32-bit application on a 64-bit system only when the following are true:

You have a 32-bit installation of MATLAB.

You use the same MATLAB installation root (matlabroot) for both 32-bit and 64-bit versions of MATLAB.

You are running from a Windows command line.

  • Ce qui se passe si on suit la doc

Le deuxième item est carrément faux (je l’ai remonté au support technique) car ce n’est pas possible d’installer 2 versions MATLAB sous le même matlabroot. L’installer vous affichera un message d’erreur d’ailleurs comme le montre ma copie d’écran :

installation_failure

  • La solution

Donc je vais faire court , il n’y a rien de spécial à faire. Vous installez un MATLAB 32-bit n’importe où sur votre pc 64-bits. Ensuite vous compilez comme vous faites d’habitude. Inutile d’utiliser le switch -win32.

Timer et dbstop

Les timers peuvent s’avérer très pratique pour exécuter à l’infini un programme.
Maintenant il faut avouer que ce n’est pas simple au premier abord à comprendre le fonctionnement , pour preuve ce graphique :

timer_execution_multi

En R2011b , les exemples ne sont légion mais en revanche en R2013b , il y a un exemple sympatique permettant de bien comprendre le système: http://www.mathworks.com/help/matlab/ref/timerclass.html
(Chapitre timer class -> chapitre Define Custom Callback Functions)

Les .m donnés en exemple avec createErgoTimer permettent de créer un timer qui tourne pendant 8 heures pour vous rappeller toutes les 10 minutes de prendre une pause de 30 secondes ;)

Bref l’information que je voulais vous partager est l’inconvénient majeur des timers est son mode debug: en effet
le point noir des timers est pour débugguer une erreur . En effet seul un dbstop if caught error vous dira exactement quelle ligne pour quel M-file il y a eu une erreur. Maintenant il suffit que dans votre code vous fassiez des try-catch , le dbstop if caught error vous arrêtera au premier try qui échoue (même si vous faites un catch derrière) . Donc ce n’est pas acceptable.
J’ai contacté le support technique à ce sujet , il n’y a pas de solution ! Malheureusement le simple dbstop if error n’a aucun effet sur les timers …

Suivant l’erreur retournée et le volume du code , cela peut être très fastidieux au développeur de jouer au détective pour trouver où le timer a pu échouer surtout quand on a l’habitude d’utiliser le débogueur MATLAB. Je suis vraiment très étonné que dbstop n’a pas un mode spécial pour les timers autre que le « if caught error ». Enfin bon j’ai remonté l’info et j’espère que la R2014a aura cette fonctionnalité.

Bug Exponent R2013a

Voilà le code très simple tapé en R2013a :

plot((1:10)*1e13,1:10)
set(gca,'xaxislocation','top')

et voilà ce que j’obtiens:

exponent_bug

L’exponent 10^13 est toujours affiché sur le bottom x-axis au lieu d’etre en haut.

J’ai déjà remonté le bug au support, leur workaround (manuel) est le suivant :

plot((1:10)*1e13,1:10)
set(gca,'xticklabel','')  % Clear the labels
set(gca,'xticklabel',0:10)  % set them to 0 to 10
set(gca,'xaxislocation','top')
gtext('x10^3')   % use the mouse to place the text on the figure

Bof je suis certain qu’il y a mieux à faire , j’ai déjà testé avec différent opengl ou renderer mais il n’y a rien à faire , toujours l’exponent est affiché en bas.Et ce bug existe depuis la … R12SP1!!!

R2013a alive!

Les points forts: Les nouvelles fonctions en bref

whatsnew
Bon là si vous regardez la vidéo paie ton bug , elle parle de la R2012b et non de la R2013a!!!

12b
Vaut mieux regarder la vidéo de Tim Gillis: Points forts de la version R2013a

Ce qui est bien c’est que les sous titres sont en français!:

tim_gillis

Pour info , les Release Notes : New Features, Bug Fixes, Compatibility Considerations

Sur ce bon téléchargement!