Matlab双对数刻度绘图函数loglog

4
(2)

今天,给各位系统的介绍下 Matlab 中使用 loglog 以对数为双周刻度绘图的常见方法,主要包括绘制一个线条、绘制多个线条、指定轴标签和刻度值、将点绘制为不带线的标记、添加图例、仅指定 y 坐标、指定目标坐标区、绘图后更改线特性等常见用法。

Matlab双对数刻度绘图函数loglog

下面我们将开始非常详细的 Matlab loglog 函数语法介绍,实例引用,结果展示。首先,我们给出 Matlab 中关于 loglog 函数的帮助文本如下:

>> help loglog
 loglog Log-log scale plot.
    loglog(...) is the same as PLOT(...), except logarithmic
    scales are used for both the X- and Y- axes.

常见用法

loglog(X,Y)
loglog(X,Y,LineSpec)
loglog(X1,Y1,...,Xn,Yn)
loglog(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)
loglog(Y)
loglog(Y,LineSpec)
loglog(___,Name,Value)
loglog(ax,___)
lineobj = loglog(___)

语法说明

loglog(X,Y) 在 x 轴和 y 轴上应用对数刻度来绘制 x 和 y 坐标。

  • 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。
  • 要在同一组坐标轴上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

loglog(X,Y,LineSpec) 使用指定的线型、标记和颜色创建绘图。

loglog(X1,Y1,…,Xn,Yn) 在同一组坐标轴上绘制多对 x 和 y 坐标。此语法可替代将坐标指定为矩阵的形式。

loglog(X1,Y1,LineSpec1,…,Xn,Yn,LineSpecn) 可为每个 x-y 对组指定特定的线型、标记和颜色。您可以对某些 x-y 对组指定 LineSpec,而对其他对组省略它。例如,loglog(X1,Y1,’o’,X2,Y2) 对第一个 x-y 对组指定标记,但没有对第二个对组指定标记。

loglog(Y) 绘制 Y 对一组隐式 x 坐标的图。

  • 如果 Y 是向量,则 x 坐标范围从 1 到 length(Y)。
  • 如果 Y 是矩阵,则对于 Y 中的每个列,图中包含一个对应的行。x 坐标的范围是从 1 到 Y 的行数。

如果 Y 包含复数,loglog 绘制 Y 的虚部对 Y 的实部的图。但是,如果您同时指定了 X 和 Y,MATLAB® 会忽略虚部。

loglog(Y,LineSpec) 指定线型、标记和颜色。

loglog(___,Name,Value) 使用一个或多个 Name,Value 对组参数指定 Line 属性。这些属性应用于绘制的所有线条。需要在上述任一语法中的所有参数之后指定 Name,Value 对组。

loglog(ax,___) 在目标坐标区上显示绘图。将坐标区指定为上述任一语法中的第一个参数。

lineobj = loglog(___) 返回一个 Line 对象或 Line 对象数组。创建绘图后,使用 lineobj 修改该绘图的属性。

绘制一个线条

将 x 定义为一个由区间 [10−1,102] 内的 50 个对数间距数组成的向量。将 y 定义为 2x。然后绘制 x 和 y,并调用 grid 函数显示网格线。

x = logspace(-1,2);
y = 2.^x;
loglog(x,y)
grid on
Matlab双对数刻度绘图函数loglog

绘制多个线条

创建一个由 x 坐标组成的向量和两个由 y 坐标组成的向量。通过将以逗号分隔的 xy 对组传递给 loglog 绘制两个线条。

x = logspace(-1,2);
y1 = 10.^x;
y2 = 1./10.^x;
loglog(x,y1,x,y2)
grid on
Matlab双对数刻度绘图函数loglog

您也可以通过将 y 指定为矩阵来用一个 xy 对组创建相同的图:loglog(x,[y1;y2])。

指定轴标签和刻度值

创建一组 x 坐标和 y 坐标,并将其显示在双对数图中。

x = logspace(-1,2,10000);
y = 5 + 3*sin(x);
loglog(x,y)
Matlab双对数刻度绘图函数loglog

调用 yticks 函数,沿 y 轴以将 y 轴刻度值置于整数增量值位置。然后通过调用 xlabel 和 ylabel 函数创建 x 和 y 轴标签。

yticks([3 4 5 6 7])
xlabel('x')
ylabel('5 + 3 sin(x)')
Matlab双对数刻度绘图函数loglog

将点绘制为不带线的标记

创建一组 x 坐标和 y 坐标,并将其显示在双对数图中。将线型指定为 ‘s’ 以显示不带连接线的方形标记。将标记填充颜色指定为 RGB 三元组 [0 0.447 0.741],它对应于深蓝色。

x = logspace(-1,2,20);
y = 10.^x;
loglog(x,y,'s','MarkerFaceColor',[0 0.447 0.741])
grid on
Matlab双对数刻度绘图函数loglog

添加图例

创建两组 x 坐标和 y 坐标,并将其显示在一个双对数图中。通过调用 legend 函数并将位置指定为 ‘northwest’,在绘图的左上角显示图例。

x = logspace(-1,2,10000);
y1 = 5 + 3*sin(x/4);
y2 = 5 - 3*sin(x/4);
loglog(x,y1,x,y2,'--')
legend('Signal 1','Signal 2','Location','northwest')
Matlab双对数刻度绘图函数loglog

仅指定 y 坐标

当您仅指定一个坐标向量时,loglog 会绘制这些坐标对值 1:length(y) 的图。例如,将 y 定义为一个由 0.001 和 100 之间的 6 个值组成的向量。创建 y 的双对数图。

y = [0.001 0.01 0.1 1 10 100];
loglog(y)
grid on
Matlab双对数刻度绘图函数loglog

如果您将 y 指定为矩阵,则绘制 y 的列对值 1:size(y,1) 的图。例如,将 y 定义为 5×3 矩阵,并将其传递给 loglog 函数。生成的图包含 3 个线条,其中每个线条的 x 坐标都是从 1 到 5。

y = [0.0010    0.0100    0.1000
     0.0100    0.1000    1.0000
     0.1000    1.0000   10.0000
     1.0000   10.5000  100.0000
    10.0000  100.0000 1000.0000];
loglog(y)
grid on
Matlab双对数刻度绘图函数loglog

指定目标坐标区

创建一个采用 ‘flow’ 图块排列方式的分块图布局,以便坐标区填充布局中的可用空间。接下来,调用 nexttile 函数创建一个坐标区对象,并返回它作为 ax1。然后通过将 ax1 传递给 loglog 函数来显示一个双对数图。

tiledlayout('flow')
ax1 = nexttile;
x = logspace(-1,2);
y1 = 10.^x;
loglog(ax1,x,y1)

重复该过程以创建第二个坐标区对象和第二个双对数图。

ax2 = nexttile;
y2 = 1./10.^x;
loglog(ax2,x,y2)

由于我用的是Matlab2016版本,不支持tiledlayout和ax方式创建分区间绘图,这里我使用如下代码完成操作,跟文中上述两段代码是一致的结果:

Matlab双对数刻度绘图函数loglog

绘图后更改线特性

创建一个包含两个线条的双对数图,并以变量 lg 形式返回行对象。

x = logspace(-1,2);
y1 = 10.^x;
y2 = 1./10.^x;
lg = loglog(x,y1,x,y2);
Matlab双对数刻度绘图函数loglog

将第一个线条的宽度更改为 2,并将第二个线条的颜色更改为紫色。

lg(1).LineWidth = 2;
lg(2).Color = [0.4 0 1];
Matlab双对数刻度绘图函数loglog

共计2人评分,平均4

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/557.html

(2)
微信公众号
古哥的头像古哥管理团队
上一篇 2020年10月24日 12:25
下一篇 2020年10月25日 20:13

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号