2011-02-04 96 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]