我是Matlab的新手,正在探索R2011a中的工具。通过在工作区(右上角子窗口)中选择变量并按下绘图(x,y)按钮,我能够成功绘制x vs sin(x),如下所示:
x = 0:0.01:2*pi;
y = sin(x);
显然按下绘图(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)
是做什么的?
答案 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')
位于某些属性值设置之后。
通常,尝试在命令窗口中键入LineSpec
或help <command>
以尝试更好地理解特定函数,或者如果您不确切地知道函数可能被调用的内容,请尝试{{ 1}}(例如doc <command>
将与过滤相关的功能)。
编辑:在这种情况下设置的其他属性是
图例线旁边会显示图例字符串。要显示图例(假设上面的数据):
lookfor <keyword>
如果要制作链接图,则设置数据源非常有用。 (见online documentation)。
lookfor filter
和plot(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
这解释了为什么允许“遗漏”LineSpec
:PropertyName
,PropertyValue
对可以放在参数列表中的任何位置。因此从技术上讲,您的语法是此列表中第二个和第四个的组合 - 您的doc plot
版本在语法上不正确,为真。
我相信你的其他问题已经由Bonlenfum回答了。