2014-01-05 65 views
1

我試着這樣說:如何在matlab中繪製矩陣3x2的跨度?

gl1 = 
    -2.5000 -1.0000 
    4.3301 1.7321 
    0   0 
syms a b 
span=gl1(:,1)*a+gl1(:,2)*b 
a=[-100:0.1:100]; 
b=[-100:0.1:100]; 
span=eval(span) 

,然後我會做plot3(跨度)。 不幸的是,在最後一排它給了我這個錯誤:

Error using vertcat 
Dimensions of matrices being concatenated are not consistent. 

Error in sym/eval (line 11) 
s = evalin('caller',vectorize(map2mat(char(x)))); 

什麼想法?我發現有人用多面體方法來做到這一點,但我不知道我能從哪裏得到,或者我該如何實現這種方法。

謝謝你的建議。

編輯:在這種情況下,跨度應該是一條線,因爲我的矩陣的秩是其中之一,但問題代表了一個矩陣秩2

回答

1

爲什麼要用符號處理?這就像一個魅力:

gl1 = 
    -2.5000 -1.0000 
    4.3301 1.7321 
    0   0 

a=[-100:0.1:100]; 
b=[-100:0.1:100]; 

span=gl1(:,1)*a+gl1(:,2)*b 

記住,你需要一些投入plot3,即在x,y和z值。因此它應該是這樣的:

plot3(span(1,:),span(2,:),span(3,:)) 
+0

這就是美麗!我總是使用象徵符號來開始一週的工作,而我仍然沒有得到變量和sym的區別。無論如何,我的代碼中的問題是一行零。出於某種原因(這是beacouse a和b不出現在gl1的最後一行)我不會得到一行零,但只有兩個在gl1中聲明。在我使用它們之前對變量進行初始化比我的符號癡迷更好。非常感謝 – user3149593

+0

再次打擾你,但是如果我用plot3繪製一個平面的跨度(比如x = [1 0 0]'t = [1 1 0]'),那麼我只能得到一條直線。我應該使用網格來繪製平面嗎? – user3149593

+0

@ user3149593:是=)這兩個['mesh'](http://www.mathworks.se/help/matlab/ref/mesh.html)和['surf'](http ://www.mathworks.se/help/matlab/ref/surf.html)(表面的簡稱)可用於飛機。 'plot3'用於繪製3D空間中的線條。 –