Cody mon feedback

Cody utilise calculateSize.m un fichier sur le FEx pour calculer votre score à chaque solution.
Chaque problème a plusieurs solutions et donc plusieurs scores possibles.
Exemple avec le problème qui consiste à savoir si un vecteur est monotonique et croissant (monotonically increasing).
La doc MATLAB explique comment faire : Differencing Data

monotically increasing

Utiliser :

function tf = test(x)
tf = all(diff(x)>0);

donne un score de 16 points versus cette méthode

function tf = test(x)
tf = isequal(unique(x),x);

qui est moins couteuse : 15 points.

Moi je trouve ça super de voir comment les autres MATLAB users répondent à ce type de problème simple. Il y a des trucs auquels je n’aurais jamais pensé.

Par exemple faire un échiquier en utilisant la fonction invhilb qui est l’inverse de la matrice Hilbert.

>> chess = invhilb(3)>0

chess =

1 0 1
0 1 0
1 0 1

C’est pas trop fun ça !!!

Voilà vous l’aurez compris j’adooooooooore CODY!

Trendy

Je cherche sur le site Monster des offres d’emploi ayant le mot matlab et se trouvant dans la région PACA :

Le code ( 3 lignes) pour récupérer le nombre d’offres correspondant à ma recherche :

url = ‘http://offres.monster.fr/offres-d-emploi/?q=matlab&cy=fr where=R__C3__A9gion__3AProvence__2DAlpes__2DC__C3__B4te-d__27Azur';

count = urlfilter(url,’matlab’,1,’backward’);

updatetrend(count);

Pour créer la figure associée :

plot(time1225,data1225, ‘o-‘);
datetick
legend(‘Number of jobs’)
title(‘MATLAB jobs on Monster in Provence-Alpes-Cote d »Azur’,’fontweight’,’bold’,’interpreter’,’none’)
ylim([0 15])
grid(‘on’)

Ce qui affiche :

my trendy matlab

Je suis plutôt content car en plus il apparait comme un des Trendy les plus populaires sur le MATLAB Central:

Trendy

En ce moment TMW propose beaucoup de fun (Trendy , Cody et autres dont on ne peut pas discuter publiquement ) et j’adooooooore!

CODY

MathWorks a sorti une nouveau jeu sur son site : , nom de code CODY.
Pleins de problèmes à résoudre allant du plus simple ajouter 2 nombres au plus compliqué comme … argh pour l’instant je les ai tous résolus ;)

Idéal pour faire une pause au travail , cody c’est par ici !

Icone MATLAB sous Ubuntu 11.10

Premièrement lors de l’installation de la R2011b j’ai cliqué sur l’option « Create symbolic link » (sinon il faut se référer à la note technique ) :

create symbolic links

Ce qui signifie que lorsque je tape matlab dans un terminal , c’est bien la R2011b qui se lance.

Ensuite 2 commandes suffisent pour faire un raccourci MATLAB sur le bureau:

1. Installer le package gnome-panel :

quefaurs@ULYSSE:~$ sudo apt-get install –no-install-recommends gnome-panel

2: puis pour faire réapparaitre la boite qui permet de créer un raccourci sur le bureau :

quefaurs@ULYSSE:~$ gnome-desktop-item-edit –create-new ~/Bureau

ou gnome-desktop-item-edit `pwd` –create-new

On remplit les champs

launcher matlab

et voilà le tour est joué :

raccourci matlab sous Ubuntu

Commandes non déployables

En allant dans le menu File-> Preferences ->Code Analyser , la section MATLAB Compiler (Deployment) Messages affiche les messages suivants :

code analyser

Par exemple on peut lire qu’entre autres les commandes HELP, ADDPATH, KEYBOARD ne sont pas autorisées lorsqu’on compile.

La solution est d’utiliser la combinaison de deux commandes : isdeployed et ismcc.
Alors attention la documentation de ismcc est fausse jusqu’en R2011b :

ismcc 11b

En effet l’exemple est contradictoire . On veut faire son addpath que dans l’environnement MATLAB , donc un tild après le if manque.
On devrait lire plutot:

if ~(ismcc || isdeployed)
addpath(fullfile(matlabroot,’work’));
end

dans la Prerelease R2012a ceci est corrigé.

Conclusion , ne supprimer pas ces messages du M-lint mais ajouter plutôt un if-test comme ci-dessus , c’est à dire ~(ismcc || isdeployed)

Les trips du MATLAB Answers

>>eval(char([113 117 105 116]))

je vous laisse la tester ;)

et dans le même style cette discussion est incroyable :
How do I generate a given Matrix in one command?

A la base le gars il demande comment générer la matrice A = [1 1 0 0 0; 1 1 1 0 0; 0 1 1 1 0; 0 0 1 1 1; 0 0 0 1 1] en une seule ligne de code.
Les réponses proposées sont toutes géniales : entre celles qui utilisent des fonctions peu utilisées telles que toeplitz ou gallery avec la matrice test tridiagonale tridiag , ou à celles utilisant la toolbox Image Processing comme imdilate , à celles utilisant la puissance de bsxfun.

Ce sont vraiment des pures réponses de geek , y a aucun doute!

Installer plusieurs MCR

Sous Linux on sait qu’on peut aussi installer autant de MCR que l’on souhaite. En revanche pour faire court , il n’est pas possible de lancer depuis le même terminal des standalones compilés dans des versions différentes. Ce qui m’a été dernièrement confirmé par le support technique de MathWorks.

Donc si on veut lancer un executable de la r2010a il faudra un bashrc qui pointe sur la r2010a comme indiqué dans mon billet précédent: Installer le MCR sous Linux

export LD_LIBRARY_PATH=/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/runtime/glnxa64:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/bin/glnxa64:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/sys/os/glnxa64:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/sys/java/jre/glnxa64/jre/lib/amd64/server:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/sys/java/jre/glnxa64/jre/lib/amd64/client:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/sys/java/jre/glnxa64/jre/lib/amd64

export XAPPLRESDIR=/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2010a/v713/X11/app-defaults

et si vous voulez lancer de la r2011b , il faut modifier ces 2 variables pour pointer sur la v716 au lieu de v713:

export LD_LIBRARY_PATH=/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/runtime/glnxa64:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/bin/glnxa64:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/sys/os/glnxa64:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/sys/java/jre/glnxa64/jre/lib/amd64/server:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/sys/java/jre/glnxa64/jre/lib/amd64/client:/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/sys/java/jre/glnxa64/jre/lib/amd64

export XAPPLRESDIR=/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/v716/X11/app-defaults

Ces chemins qui ne sont valables que sur ma machine (/home/quefaurs/data/DOWNLOAD_SERVER/MATLAB/MCR_DEPLOYED/l64/r2011b/ )sont à modifier évidemment suivant vos machines. Seule la partie en gras est valide.

Donc voilà pas possible de concaténer ces 2 variables d’environnement XAPPLRESDIR et LD_LIBRARY_PATH dans un unique bashrc.

Voilà un article qui peut faire l’objet d’une FAQ en français pour le MATLAB Compiler. Sur ce bonne fêtes a vous!

Bug de fileparts en R2011b

c’est déjà un message d’erreur en R2011b !!! et non pas un warning , la preuve :

[a,b,c,d] = fileparts(fullfile(matlabroot,’license.txt’));

retourne une erreur:

Error using fileparts
Too many output arguments.

on s’attendrait plutôt au warning des versions précédentes comme par exemple en R2010b ou en R2011a où on était déjà prévenus :

>> [a,b,c,d] = fileparts(fullfile(matlabroot,’license.txt’))
Warning: The fourth output, VERSN, of FILEPARTS will be removed in a future release.
> In fileparts at 35

a =

C:\MATLAB\SOF\r2010b

b =

license

c =

.txt

d =

 »

En effet en editant fileparts.m dans ces versions là on peut lire:

if nargout == 4
warning(‘MATLAB:fileparts:VersionToBeRemoved’, …
‘The fourth output, VERSN, of FILEPARTS will be removed in a future release.’);
end

A noter également que la première ligne de fileparts.m acceptait 4 arguments de sortie:

function [path, fname, extension,version] = fileparts(name)

Je vous le donne en 1000 , dès la r2011b cette ligne est devenue :

function [path, name, ext] = fileparts(file)

N’ayant pas trouvé de bug report à ce sujet , j’ai remonté cette erreur de documentation.