Je ne trouve pas de solution simple, néanmoins, on peut créer une version améliorée de la fonction ROSE.
Attention : dans ce qui suit, il faut impérativement travailler sur une copie locale de la fonction ROSE que l'on renommera en MYROSE
Il faut tout d'abord copier le fichier rose.m dans ton dossier de travail courant et le renommer en myrose.m. Il faut aussi renommer la fonction à la première ligne du fichier.
On utilisera donc par la suite myrose à la place de rose.
L'idée est d'affecter un facteur d'échelle aux données à tracer pour obtenir un graphique avec les bonnes limites, puis à appliquer l'échelle inverse aux lignes tracées.
Editer le fichier myrose.m et ajouter le bloc suivant :
1 2 3 4 5 6
| R = 1;
f = max(r(:))/R;
r = r-min(r(:));
r = R*r/max(r(:)); |
juste avant la ligne suivante (ligne n°72 sous MATLAB R2009a) :
% Form theta values for histogram triangle from triangle centers (xx)
La variable R donne la valeur de la limite dans la direction rho.
On ajoute également le bloc suivant:
1 2 3
| x = get(h,'xdata')*f;
y = get(h,'ydata')*f;
set(h,'xdata',x,'ydata',y) |
juste après les lignes utilisant POLAR :
1 2 3 4 5 6
|
if ~isempty(cax)
h = polar(cax,t,r);
else
h = polar(t,r);
end |
Si MATLAB se plaint à propos d'une fonction MCODEREGISTER manquante, il suffit de la copier au même niveau que myrose.m
Elle se trouve dans le dossier donné par cette commande :
Une autre solution consiste à modifier dans myrose.m la ligne :
mcoderegister('Handles',h,'Target',h(1),'Name','rose');
par
makemcode('RegisterHandle',h,'IgnoreHandle',h(1),'FunctionName','rose');
Voila, c'est l'idée...
Partager