我试图了解semilogy
函数,该函数通常用于在MATLAB中绘制数据。
正如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);
但是正如我们所看到的,图之间的y轴限制是不同的。任何人都可以清楚我的怀疑吗?
答案 0 :(得分:3)
在第一个轴中,设置轴以执行对数,并自动打印刻度线标签和网格。因此,这些数字仍然是绝对值。但他们的标记是根据对数轴。在第二个中,您只是使用线性轴绘制对数函数。虽然看起来很相似,但它们并不是相同的情节。
打开网格可能会让你更好地了解它。看看两个地块中8或80的位置。
答案 1 :(得分:3)
当您使用semilogy
时,您只会更改值的显示方式,而如果您手动执行log
操作 - 您现在有不同的值强烈>你正在密谋。
如果我们查看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]
。