不明白Matlab生成的plot命令

时间:2013-01-10 00:33:49

标签: matlab

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

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

Selected x and y variables, then pressed plot(x,y)

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

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

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

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)是做什么的?

2 个答案:

答案 0 :(得分:4)

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

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

要使用图表,第二种形式通常是您所需要的:

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

如果省略x,则值隐含为整数1:len(y),这有时已足够,但在这种情况下并不理想。

figure(H)命令要么创建一个图形窗口,要么已经存在句柄H的图形,只需将该图形赋予焦点(如果它隐藏在其他窗口后面,则会将其显示在视图中,例如)。

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

对于更高级的设置,linespec还可以包含属性,值对,但这会使问题复杂化,因为它们已成为通用属性,值设置,因此可以显示LineSpec或{{{ 1}}部分。所以

'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') 位于某些属性值设置之后。

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

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

  • 'DisplayName'
  • 'XDataSource'
  • 'YDataSource'

图例线旁边会显示图例字符串。要显示图例(假设上面的数据):

lookfor <keyword>

如果要制作链接图,则设置数据源非常有用。 (见online documentation)。

lookfor filterplot(x,y,'DisplayName', 'sin x'); legend toggle 的帮助页面提供了数字可以采取的所有属性的全面详细信息;并查看figure中图中各行的属性。

编辑2:添加了上面的linespec说明。

答案 1 :(得分: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

这解释了为什么允许“遗漏”LineSpecPropertyNamePropertyValue对可以放在参数列表中的任何位置。因此从技术上讲,您的语法是此列表中第二个和第四个的组合 - 您的doc plot版本在语法上不正确,为真。

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