替换符号矩阵中的变量符号表达式而不是常量值

时间:2017-01-22 12:55:22

标签: matlab matrix

此代码可以创建给定大小的符号变量矩阵。

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循环替换我的符号矩阵中的所有这些表达式。

知道我的问题是:我该怎么做?

0 个答案:

没有答案