2011-02-04 17 views
0

我想創建一個函數,返回一個矩陣,它包含一個變量「l」,這個變量是一個自變量,稍後將對一個圖形進行掃描。MATLAB - 具有自變量的矩陣函數?

我會根據包含「n」和「d」的用戶輸入計算「phi」,那麼我會用「n」,「d」和「phi」來找到「a」,「b」 「c」和「d」創建矩陣「m」。這個矩陣「m」將是「l」的函數。

phi = 2*pi*n*d/l; 
a = cos(phi); 
b = 1i*sin(phi)/n; 
c = 1i*n*sin(phi); 
d = cos(phi); 
m = [a b;c d]; 

我真的不喜歡MATLAB的編碼風格相比,C++和Python的...如何將你們實現這個功能?

摘要:我想要一個函數,它返回一個包含一個獨立變量的矩陣,以便稍後對一個圖進行掃描。

回答

2

您的意思是使用symbolic toolbox

如果是這樣,我想你想:

phi = 2*pi*n*d/sym('l'); 
a = cos(phi); 
b = 1i*sin(phi)/n; 
c = 1i*n*sin(phi); 
d = cos(phi); 
m = [a b;c d]; 

而且作爲一個小余,你是否知道你的d走樣?那是故意的嗎?

+0

的d「? – user603479 2011-02-04 17:58:20

+0

你在`d`的定義中使用`d`,但是重新指定`d`來構造你的矩陣`m`。最好不要在相同範圍內使用同一個變量名來表示語義上不同的值。 – wich 2011-02-04 21:11:18

3

你可以有兩種選擇。

1)創建返回基於nd矩陣的功能,l

BuildM = @(n,d,l)[cos((2*pi*d*n)/l),(sin((2*pi*d*n)/l)*i)/n;n*sin((2*pi*d*n)/l)*i,cos((2*pi*d*n)/l)]; 

BuildM(4,2,100) %ans=[0.8763,0.1204i;1.9270i,0.8763] 

2)你說的「走樣意味着使用象徵性的工具箱(如果可能)

syms n,d,l 
phi = 2*pi*n*d/l; 
a = cos(phi); 
b = 1i*sin(phi)/n; 
c = 1i*n*sin(phi); 
d = cos(phi); 
m = [a b;c d]; 

subs(m,{'n','d','l'},{4,2,100}) %ans=[0.8763,0.1204i;1.9270i,0.8763]