2016-11-25 1 views
1

J'essaie de comprendre la fonction semilogy qui est normalement utilisée pour tracer des données dans MATLAB.Comprendre la fonction semilogy

Comme la définition dit dans la section d'aide Matlab:

semilogy(Y) crée un terrain en utilisant une base 10 échelle logarithmique pour les y et -axis une échelle linéaire pour les x -axis. Il trace les colonnes de Y par rapport à leur index si Y contient des nombres réels.

Le code ci-dessous devrait produire une même parcelle:

y1 = 1:100; 
figure 
semilogy(y1, 'linewidth', 2); 

x2 = 1:100; 
y2 = log10(x2); 
figure 
plot(x2, y2, 'linewidth', 2); 

enter image description here

Mais comme on peut le voir, les limites de l'axe y sont différents entre les parcelles. Quelqu'un peut-il effacer mon doute?

Répondre

3

Dans le premier, les axes sont configurés pour exécuter le logarithme et imprimer les étiquettes et les grilles automatiquement. Par conséquent, les chiffres sont toujours dans leur valeur absolue. Mais leurs marquages ​​sont selon l'axe logarithmique. Dans le second, vous tracez simplement la fonction de log avec un axe linéaire. Bien que cela ressemble, ils ne sont pas les mêmes parcelles.

Peut-être que l'activation de la grille peut vous donner une meilleure idée à ce sujet. Jetez un oeil à où 8 ou 80 est dans les deux parcelles.

enter image description here

3

Lorsque vous utilisez semilogy vous modifiez uniquement la façon dont les valeurs sont affichées , alors que si vous effectuez manuellement l'opération log - vous avez maintenant valeurs différentes que vous tracer.

Si nous regardons semilogy.m nous pouvons voir ce qui suit:

%SEMILOGY Semi-log scale plot. 
% SEMILOGY(...) is the same as PLOT(...), except a 
% logarithmic (base 10) scale is used for the Y-axis. 

Ainsi, au lieu d'utiliser semilogy vous pouvez obtenir la même chose si vous avez fait:

plot(y1, 'linewidth', 2); 
set(gca,'YScale','log'); 

Avis que les limites des axes ont effectivement la même signification: dans le graphique de droite, vous obtenez 0...2 et dans la gauche vous obtenez 10^[0...2] .