2016-11-25 13 views
1

私はsemilogy関数を理解しようとしていますが、これは通常MATLABでデータをプロットするために使用されます。定義としてsemilogy関数の理解

は、MATLABのヘルプセクションで述べている:

semilogy(Y)y - 軸のベース10対数スケールを使用してプロットし、x - 軸用リニアスケールを作成します。 Yの実数が含まれている場合は、そのインデックスに対してYの列をプロットします。

以下のコードは、同じプロット生成すべきである:

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

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

enter image description here

をしかし、我々が見ることができるように、Y軸の範囲は、プロット間で異なります。誰も私の疑いを明らかにすることはできますか?

答えて

3

最初の軸では、対数を実行するように軸が設定され、ティックラベルとグリッドが自動的にきれいに印刷されます。したがって、数値は依然として絶対値です。しかし、それらの印は対数軸に従っています。 2番目の方法では、直線軸を使ってログ関数をプロットするだけです。類似しているように見えますが、それらは同じプロットではありません。

グリッドをオンにすると、アイデアがより良くなる場合があります。両方のプロットに8または80が入っている場所を見てください。

enter image description here

3

あなたは唯一の手動log操作を実行する場合、一方の値が、表示方法を変更semilogy使用する場合 - あなたは今異なる値あなたはプロットしているを持っています。

我々はsemilogy.mに見れば、我々は以下を参照してくださいすることができます

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

あなたがやった場合はこのようにして、代わりにsemilogyを使用してのあなたが同じことを得ることができます:

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

お知らせ軸の限界は実際には同じ意味を持っています:右のチャートでは0...2、左側には10^[0...2]