可以考虑如下定义方式:
>> syms a b c d %%%%% 定义符号变量
>> A = [a b;c d] %%%%% 产生矩阵
A =
[ a, b]
[ c, d]
>> subs(A,{a,b,c,d},{1 2 3 4}) %%%%%%% 变量赋值
ans =
1 2
3 4
补充回答,也可以采用结构变量的方法,例如:
>> A = struct('x1',0,'x2',0,'x3',0,'x4',0); %%%%%% 定义结构变量A,并初始化
>> B = [A.x1 A.x2;A.x3 A.x4] %%%%%% 获取初始化矩阵
B =
0 0
0 0
>> A.x1 = 5; %%%%%% 变量赋值
>> A.x2 = 6;
>> A.x3 = 7;
>> A.x4 = 8;
>> B = [A.x1 A.x2;A.x3 A.x4] %%%%% 新矩阵
B =
5 6
7 8
参考代码:
n = 5;
x = sym(zeros(n));
for i=1:n
for j=1:n
cmd = sprintf('sym(''x%i%i'')',i,j);
x(i,j) = eval(cmd);
end
end
x
运行结果:
x =
[ x11, x12, x13, x14, x15]
[ x21, x22, x23, x24, x25]
[ x31, x32, x33, x34, x35]
[ x41, x42, x43, x44, x45]
[ x51, x52, x53, x54, x55]
说明:
1、想要不同的维数,修改n即可。
2、为避免歧义,最好改一下符号的格式。例如,按照现在的写法,x111究竟是指x(11,1)还是x(1,11)?建议使用类似 x_i_j 这类符号,代码中相