2013-01-10 27 views
3

我是Matlab新手,正在探索R2011a中的工具。我能夠在工作區(右上子窗口)選擇變量並按情節(X,Y)按鈕,像這樣成功地繪X VS的sin(x):不理解Matlab生成的繪圖命令

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)中所產生的命令呢?

+0

您搜索了'plot',爲什麼不搜索'gcf'呢? http://www.mathworks.com/help/matlab/ref/gcf.html – bla

+0

@natan,我想說那是因爲'gcf'是作爲參數傳遞的,所以它不是很明顯,它是一個'現在的數字句柄'可以用google(至少對我來說)。 – svz

+0

我認爲這是一些全局變量,在我的工作區中不可見。 – stackoverflowuser2010

回答

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'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將功能有關濾波)。

編輯:另外在這種情況下,設置的屬性是

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

圖例串將被顯示下一個到這個陰謀的線路。要顯示圖例(假設上述數據):

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

如果您正在製作鏈接圖,設置數據源可能很有用。 (參見online documentation)。

figurefigure properties的幫助頁面提供了數字可以採用的所有屬性的全面詳細信息;並在圖中查看lineseries properties的各條線的屬性。

編輯2:添加了上面linespec的解釋。

+0

用於生成的plot()命令的其他參數是什麼,即'DisplayName','y與x','XDataSource','x','YDataSource','y'?這些屬性和價值?我怎麼弄出來的? – stackoverflowuser2010

+0

您說生成的繪圖命令是列表中的第4個,但列表中的第4個是語法:plot(X1,Y1,LineSpec,'PropertyName',PropertyValue)。 LineSpec發生了什麼事?這是可選的嗎? – stackoverflowuser2010

+0

你還提到'DisplayName'在'figure properties'的文檔中。它實際上是在「Lineseries屬性」中。 – stackoverflowuser2010

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

這就解釋了爲什麼它被允許「離開了」 LineSpecPropertyName,PropertyValue的配對可以放置在參數列表中的任何位置。所以從技術上講,你的語法是這個列表中第二個和第四個的組合 - 而你的doc plot版本在語法上不是正確的,是正確的。

我相信您的其他問題已經由Bonlenfum解答。

+0

我正在使用R2011a。但無論如何,您和我的文檔都沒有明確說明LineSpec是可選的。在其他典型的語言和文檔中,可選參數用方括號表示,例如, [一個linespec]。 – stackoverflowuser2010

+0

'LineSpec' _is_可選,因爲第二個語法不包含它,'...'表示任何其他參數(例如''PropertyName',PropertyValue')可以佔據那個位置。 –