2016-11-25 3 views
1

Ich versuche zu verstehen, semilogy Funktion, die normalerweise für das Zeichnen von Daten in MATLAB verwendet wird.Verständnis der Semilogie-Funktion

Da die Definition sagt in Hilfebereich MATLAB:

semilogy(Y) schafft ein Diagramm, das eine Basis 10 logarithmische Skala für den y -Achse und eine lineare Skala für die x -Achse mit. Es zeichnet die Spalten von Y gegen ihren Index, wenn Y reelle Zahlen enthält.

Der Code unten sollte gleiches Grundstück produzieren:

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

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

enter image description here

Aber wie wir sehen können, sind die y-Achse Grenzen unterschiedlich zwischen den Stellplätzen. Kann jemand meine Zweifel klären?

Antwort

3

In der ersten werden die Achsen eingerichtet, um den Logarithmus durchzuführen und die Ticklabels und Gitter automatisch auszudrucken. Daher sind die Zahlen immer noch in ihrem absoluten Wert. Aber ihre Markierungen entsprechen der logarithmischen Achse. In der zweiten loggen Sie nur Log-Funktion mit einer linearen Achse. Obwohl sie ähnlich aussehen, sind sie nicht die gleichen Plots.

Wenn Sie das Gitter einschalten, können Sie die Idee vielleicht besser verstehen. Schau dir an, wo 8 oder 80 in beiden Parzellen ist.

enter image description here

3

Wenn Sie semilogy Sie nur ändern, wie die Werte angezeigt werden, während, wenn Sie manuell die log Operation durchführen - jetzt Sie unterschiedliche Werte haben, die Sie Plotten.

Wenn wir in semilogy.m aussehen können wir folgendes sehen:

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

So anstelle von semilogy Sie die gleiche Sache bekommen könnte, wenn Sie tat:

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

Hinweis dass die Achsengrenzen tatsächlich die gleiche Bedeutung haben: In der rechten Grafik erhalten Sie 0...2 und in der linken die 10^[0...2] .