了解半文学功能

时间:2016-11-25 06:12:09

标签: matlab plot matlab-figure axes logarithm

我试图了解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);

enter image description here

但是正如我们所看到的,图之间的y轴限制是不同的。任何人都可以清楚我的怀疑吗?

2 个答案:

答案 0 :(得分:3)

在第一个轴中,设置轴以执行对数,并自动打印刻度线标签和网格。因此,这些数字仍然是绝对值。但他们的标记是根据对数轴。在第二个中,您只是使用线性轴绘制对数函数。虽然看起来很相似,但它们并不是相同的情节。

打开网格可能会让你更好地了解它。看看两个地块中8或80的位置。

enter image description here

答案 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]