我创建了一个矩阵(或矢量),其成员是符号表达式(其名称为A)。当我尝试替换x0 = [500 550 500 500 450 500 555 450]'
而不是x = [x3 x4 x5 x6 y3 y4 y5 y6]'
时,没有任何反应。 x0
的等级为double
,x
的等级为sym
。
这是我的代码:
A = conj(((x3 - 500)^2 + (y3 - 300)^2)^(1/2))
conj(((x4 - 500)^2 + (y4 - 300)^2)^(1/2))
conj(((x5 - 500)^2 + (y5 - 300)^2)^(1/2))
conj(((y3 - 8623888390675025/17592186044416)^2 + (x3 - 1591228181075565/4398046511104)^2)^(1/2))
conj(((y4 - 8623888390675025/17592186044416)^2 + (x4 - 1591228181075565/4398046511104)^2)^(1/2))
conj(((y5 - 8623888390675025/17592186044416)^2 + (x5 - 1591228181075565/4398046511104)^2)^(1/2))
conj(((x3 - x4)^2 + (y3 - y4)^2)^(1/2))
conj(((x3 - x5)^2 + (y3 - y5)^2)^(1/2))
conj(((x4 - x5)^2 + (y4 - y5)^2)^(1/2))
conj(((x6 - 500)^2 + (y6 - 300)^2)^(1/2))
conj(((y6 - 8623888390675025/17592186044416)^2 + (x6 - 1591228181075565/4398046511104)^2)^(1/2))
conj(((x3 - x6)^2 + (y3 - y6)^2)^(1/2))
conj(((x4 - x6)^2 + (y4 - y6)^2)^(1/2))
conj(((x5 - x6)^2 + (y5 - y6)^2)^(1/2))
for j = 1:length(x)
A = subs(A,x(j),x0(j))
end
我该怎么办?
答案 0 :(得分:0)
你不能以这种方式为符号矩阵赋值,
syms a b c
x=[a b c]
x=
[a, b, c]
当您为x设置x时自身更改:
x=[1,2,3]
x=
[1,2,3]
试验:
eval(a)
ans=
a
所以当你改变x值时,只需改变x本身的值(不是b和c)
您必须分别为b和c分配值
a=1; b=2; c=3;
eval(x)
ans=
[1, 2, 3]
答案 1 :(得分:0)
感谢所有答案,我找到了答案。我正在使用下面的循环,它运作良好。注意:要避免使用'conj'
而不是.'
的所有代码'
来转换矩阵。
此链接非常有用:simbolic-toolbox-how-to-avoid-conj-in-matrix
for i = 1:numel(A)
A(i) = subs(A(i),x,x0);
end