我创建了一个矩阵(或向量(,它的成员是符号表达式(它的名字是A(。 当我尝试替换x0 = [500 550 500 500 450 500 555 450]'
而不是x = [x3 x4 x5 x6 y3 y4 y5 y6]'
什么也没发生时.class 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
我该怎么办?
你不能以这种方式为符号矩阵赋值,
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]
感谢您的所有答案,我找到了答案。 我正在使用下面的循环,它运行良好。 注意:为了避免在所有代码中'conj'
,我使用了.'
而不是'
来转置矩阵。这个链接非常有用:simbolic-toolbox-how-to-avoid-conj-in-matrix
for i = 1:numel(A)
A(i) = subs(A(i),x,x0);
end