3

我是 Matlab 的新手,正在探索 R2011a 中的工具。通过在工作区(右上角的子窗口)中选择变量并按下 plot(x,y) 按钮,我能够成功绘制 x vs sin(x),如下所示:

x = 0:0.01:2*pi;
y = sin(x);

选择 x 和 y 变量,然后按下 plot(x,y)

显然按下 plot(x,y) 按钮会生成以下命令,我从命令窗口复制并粘贴了该命令:

plot(x,y,'DisplayName','y vs. x','XDataSource','x','YDataSource','y');figure(gcf)

有人可以解释上述命令的作用吗?我做了“doc plot”(使用 Matlab 2011a),下面列出了可能的参数选项。哪一个与上面的 plot 命令匹配,我怎么知道呢?

plot(Y)
plot(X1,Y1,...,Xn,Yn)
plot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec)
plot(X1,Y1,LineSpec,'PropertyName',PropertyValue)
plot(axes_handle,X1,Y1,LineSpec,'PropertyName',PropertyValue)
h = plot(X1,Y1,LineSpec,'PropertyName',PropertyValue)

另外,figure(gcf)生成的命令中有什么作用?

4

2 回答 2

4

您的命令使用的语法是列表中的第 4 个。

plot(x,y, [LineSpec,] 'property1', value1, 'property2', value2, 'property3', value3);

要使用图表,通常只需要第二种形式:

x = 0:0.001:pi;
y = sin(x);
plot(x,y)

如果您省略x,则这些值暗示为 integers 1:len(y),这有时就足够了,但在这种情况下并不理想。

figure(H)命令要么创建一个图形窗口,要么如果带有句柄的图形H已经存在,则简单地为该图形提供焦点(例如,如果它隐藏在其他窗口后面,它将显示它)。

LineSpec用于修改线条的外观,例如它们的颜色或线条是实线还是虚线。例如,'r--x'制作一条带有十字的红色虚线作为标记(在每个数据点上)。如果省略,则采用默认值(没有标记的蓝色实线)。

对于更高级的设置,linespec 还可以包含属性、值对,但这会使事情变得有点复杂,因为它们已成为通用属性、值设置,因此可以LineSpec'PropertyName',PropertyValue部件一起出现。所以

plot(x,y, 'r--x', 'linewidth', 3, 'DisplayName', 'sin x')
plot(x,y, 'r--x', 'DisplayName', 'sin x', 'linewidth', 3)

都是有效的并且具有产生更粗线的相同效果,而

plot(x,y, 'linewidth', 3, 'DisplayName', 'sin x', 'r--x')

无效,因为它位于LineSpec某些属性、值设置之后。

通常,尝试在命令窗口中键入help <command>doc <command>尝试更好地理解特定函数,或者如果您不确切知道该函数可能被调用的内容,请尝试lookfor <keyword>(例如 lookfor filter与过滤相关的函数)。

编辑:在这种情况下设置的其他属性是

  • '显示名称'
  • 'XDataSource'
  • 'Y 数据源'

图例字符串将显示在该图的行旁边。要显示图例(假设上面的数据):

plot(x,y,'DisplayName', 'sin x');
legend toggle

如果您正在制作链接图,设置数据源可能很有用。(参见在线文档)。

帮助页面figurefigure properties提供图形可以采用的所有属性的全面详细信息;并查看lineseries properties图中各条线的属性。

编辑 2:添加了上面 linespec 的解释。

于 2013-01-10T01:12:37.633 回答
0

我不确定您使用的是哪个 MATLAB 版本,但doc plot在 R2011b 和 R2012b 中有上述语法版本:

plot(Y)
plot(X1,Y1,...,Xn,Yn)
plot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec)
plot(...,'PropertyName',PropertyValue,...)
plot(axes_handle,...)
h = plot(...)

http://www.mathworks.nl/help/matlab/ref/plot.html

这解释了为什么允许“省略” :的LineSpec对可以放在参数列表中的任何位置。所以从技术上讲,你的语法是这个列表中第二个和第四个的组合——你的版本在语法上不正确,真的。PropertyNamePropertyValuedoc plot

我相信 Bonlenfum 已经回答了您的其他问题。

于 2013-01-10T14:53:01.460 回答