Substition of variables in a matrix

1 次查看(过去 30 天)
Hi,
I have a matrix in the form of
Adiff=
[ Xi1, Yi1, Zi1, 1, 0, 0, 0, 0, -Xi1*xi1, -Yi1*xi1, -Zi1*xi1]
[ 0, 0, 0, 0, Xi1, Yi1, Zi1, 1, -Xi1*yi1, -Yi1*yi1, -Zi1*yi1]
[ Xi2, Yi2, Zi2, 1, 0, 0, 0, 0, -Xi2*xi2, -Yi2*xi2, -Zi2*xi2]
[ 0, 0, 0, 0, Xi2, Yi2, Zi2, 1, -Xi2*yi2, -Yi2*yi2, -Zi2*yi2]
Now i want to substitute the symbolic vectors Xi =[Xi1; Xi2 ...] , Yi= [Yi1; Yi2 ...] etc... with vectors with actual values,
e.g.
X1 = -390.93; Y1 = -477.52; Z1 = 0.07;
X2 = -101.5; Y2 = -479.19; Z2 = 0.11;
Xg = [X1; X2; X3; X4; X5; X6];
Yg = [Y1; Y2; Y3; Y4; Y5; Y6];
Zg = [Z1; Z2; Z3; Z4; Z5; Z6];
I already tried
.
for i=1:1:2
A = subs(Adiff, [Xi(i), Yi(i), Zi(i)], [Xg(i), Yg(i), Zg(i)]);
end
But in this loop, only the second variables will be replaced.
Edit: Additional code pieces
Syms
Xi = sym('Xi',[1,2]);
Yi = sym('Yi',[1,2]);
Zi = sym('Zi',[1,2]);
Thanks in advance!

回答(1 个)

Karan Gill
Karan Gill 2017-2-21
This works. Example is below. Can you provide the code for getting Adiff? Are you creating Xi,Yi,Zi first and using them to create Adiff?
>> A = sym('A%d%d',[3 3])
V = A(1,:)
values = randi(100,1,3)
subs(A,V,values)
A =
[ A11, A12, A13]
[ A21, A22, A23]
[ A31, A32, A33]
V =
[ A11, A12, A13]
values =
15 43 92
ans =
[ 15, 43, 92]
[ A21, A22, A23]
[ A31, A32, A33]

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by