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

Alors déjà que dit la doc à ce sujet:

http://www.mathworks.fr/help/toolbox/compiler/f12-999353.html

Installing Multiple MCRs on One Machine

Pour résumer:
Sous Linux et Windows il est possible techniquement d’installer plusieurs MCR sur la même machine. En revanche sous Macintosh , une seule instance de MCR est autorisée.

Très bien mais est ce que cela veut dire pour autant que je peux lancer facilement un code compilé en r2010a et en r2011b sur ma machine Linux ou Windows?

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.