Matlab中semilogx函数使用

目录

语法

说明

​示例

绘制一个线条

绘制多个线条

 指定轴标签和刻度值

 将点绘制为不带线的标记

 添加图例

 仅指定 y 坐标

 指定目标坐标区

 绘制后更改线条外观

 绘制不连续函数


        semilogx函数的功能是半对数图(x 轴有对数刻度)。

语法

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

说明

​semilogx(X,Y) 在 x 轴上使用以 10 为底的对数刻度、在 y 轴上使用线性刻度来绘制 x 和 y 坐标。

  • 要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。

  • 要在同一组坐标轴上绘制多组坐标,请将 X 或 Y 中的至少一个指定为矩阵。

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

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

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

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

  • 如果 Y 是向量,则 x 坐标范围从 1 到 length(Y)。

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

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

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

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

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

lineobj = semilogx(___) 返回一个 Line 对象或 Line 对象数组。创建绘图后,使用 lineobj 修改该绘图的属性。有关属性列表,请参阅 Line 属性。

​示例

绘制一个线条

        ​将 x 定义为一个由从 0.1 到 100 的对数间距值组成的向量,将 y 定义为 x 的副本。创建 x 和 y 的线性对数图,并调用 grid 函数显示网格线。

x = logspace(-1,2);
y = x;
semilogx(x,y)
grid on

绘制多个线条

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

x = logspace(-1,2);
y1 = x;
y2 = -x;
semilogx(x,y1,x,y2)
grid on

 指定轴标签和刻度值

        将 f 定义为一个包含从 10 Hz 到 100000 Hz 的频率的向量。将 gain 定义为以分贝为单位的功率增益值的向量。然后绘制增益值对频率的图。

f = logspace(1,5,100);
v = linspace(-50,50,100);
gain = (1-exp(5*(2.5*v.^2)./7500))/14;
semilogx(f,gain)
grid on

yticks([-5 -4 -3 -2 -1 0])
xlabel ('Freqency (Hz)')
ylabel('Power Gain (dB)')

 将点绘制为不带线的标记

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

x = logspace(-1,2,15);
y = 12 + x;
semilogx(x,y,'o','MarkerFaceColor',[0 0.447 0.741])
grid on

 添加图例

        创建一个由对数间距 x 坐标组成的向量和两个由 y 坐标组成的向量。然后通过将以逗号分隔的 x-y 对组传递给 semilogx 绘制两个线条。通过调用 legend 函数显示图例。

x = logspace(1,4,100);
v = linspace(-50,50,100);
y1 = 100*exp(-1*((v+5).^2)./200);
y2 = 100*exp(-1*(v.^2)./200);
semilogx(x,y1,x,y2,'--')
legend('Measured','Estimated')
grid on

 仅指定 y 坐标

        当仅指定一个坐标向量时,semilogx 会绘制这些坐标对值 1:length(y) 的图。例如,将 y 定义为一个由 0 和 40 之间的 5 个值组成的向量。创建 y 的线性对数图。

y = [0 10 20 30 40];
semilogx(y)
grid on

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

y = [ 0    10    20
     10    20    30
     20    30    40
     30    40    50
     40    50    60];

semilogx(y)
grid on

 指定目标坐标区

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

tiledlayout('flow')
ax1 = nexttile;
x = logspace(-1,2);
y1 = 1./x;
semilogx(ax1,x,y1)

         重复该过程以创建第二个线性对数图。

ax2 = nexttile;
y2 = x;
semilogx(ax2,x,y2)

 绘制后更改线条外观

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

x = logspace(-1,2);
y1 = x;
y2 = -x;
slg = semilogx(x,y1,x,y2);

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

slg(1).LineWidth = 3;
slg(2).Color = [0.4 0 1];

 绘制不连续函数

        在数据中任何不连续的位置插入 NaN 值。semilogx 函数显示这些位置的空缺。

        创建一对 x 坐标向量和 y 坐标向量。用 NaN 值替换第四十个 y 坐标。然后创建一个 x 和 y 的线性对数图。

x = logspace(-1,2);
y = x;
y(40) = NaN;
semilogx(x,y)

 提示
        semilogx 函数基于坐标区的 ColorOrder 和 LineStyleOrder 属性选用颜色和线型。semilogx 先对第一种线型依序使用每种颜色,直至用尽。然后,再对下一个线型依序使用每种颜色,以此类推。

        通过在坐标区中设置 ColorOrder 或 LineStyleOrder 属性,可以在绘图后更改颜色和线型。也可以调用 colororder 函数来更改图窗中所有坐标区的色序。

  • 18
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值