此代码可以创建给定大小的符号变量矩阵。
clc
clear all
close all
% Get size input from user
M=input('input a scalar number: ');
% Create symbolic vars matrix
m=2+((2*M)+1)*2;
n=2+((2*M)+1)*2;
H=sym('a%d%d',[m,n]);
for m=1:2+((2*M)+1)*2
for n=1:2+((2*M)+1)*2
if m==1 && n>2
H(m,n)=0;
elseif m==2 && n>((2*M)+1+2)
H(m,n)=0;
elseif n==1 && m>2
H(m,n)=0;
elseif n==2 && m>2+((2*M)+1) && m<=(2*((2*M)+1))+2
H(m,n)=0;
elseif m>2 && m<=2+((2*M)+1) && n>2 && n<=2+((2*M)+1)&& n~=m
H(m,n)=0;
elseif m>2+((2*M)+1)&& m<=(2*((2*M)+1))+2 && n>2+((2*M)+1)&& n<=(2*((2*M)+1))+2 && m~=n
H(m,n)=0;
end
end
end
现在,在运行此代码后,如果输入例如M=3
,您将拥有16-by-16
矩阵。
现在,我想要将矩阵元素设置为等于表达式,而不是上面for for循环矩阵中的每个=0
。例如:
for m=1:2+((2*M)+1)*2
for n=1:2+((2*M)+1)*2
% Other conditions
if m==2 && n<=(2*M)+1
H(m,n)= (i*w)+(1/tqr) + (1/tqe) + (1/td0);
end
% Other conditions
end
end
如您所见,此代码定义了a23 ... a2(2M+1)
的表达式。
现在我想自动用for循环替换我的符号矩阵中的所有这些表达式。
知道我的问题是:我该怎么做?