了解符号函数

Understanding semilogy function

我正在尝试理解通常用于在 MATLAB 中绘制数据的 semilogy 函数。

正如 MATLAB 帮助部分中的定义所说:

semilogy(Y) creates a plot using a base 10 logarithmic scale for the y-axis and a linear scale for the x-axis. It plots the columns of Y versus their index if Y contains real numbers.

下面的代码应该产生相同的情节:

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

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

但正如我们所见,各图之间的 y 轴范围不同。谁能解开我的疑惑?

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

也许打开网格可以让您更好地了解它。查看两个图中 8 或 80 的位置。

当您使用 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].