Missing coefficients in symbolic expressions with coeffs
Afficher commentaires plus anciens
Ok, I have been trying to use coeffs here is what I am currently have a problem with, although I have 5 symbolic variables, not all show up in every equation so when I try and gather coeffients I would like to be able to catch even the 0 values. heres what I have so far.
clc
clear
m= [2 -3 ; 3 -2];
q = [ -1 -1]';
xv = sym('x1');
lm = length(m);
yv = sym(zeros(1, lm))';
zv = sym(zeros(1, lm))';
for k=1:lm
yv(k) = sym(sprintf('x%d', k+1));
zv(k) = sym(sprintf('x%d', k+lm+1));
end
A = [-(m*yv+xv*q);m*yv+xv*q-zv; yv-zv;zv-yv];
Aineq=zeros;
temp = zeros;
for i=1:length(A)
temp=coeffs(A(i,:))
for j=1:length(temp)
Aineq(i,j)=temp(j)
end
end
Aineq
the last nested for was my attempt to gather the coefficients. I but I cannot place them in the right way this way. Any suggestions? I have looked at ineval and feval but I do not see the how to use these tools
Oh this is what my output looks like A =
-2*x2+3*x3+x1
-3*x2+2*x3+x1
2*x2-3*x3-x1-x4
3*x2-2*x3-x1-x5
x2-x4
x3-x5
x4-x2
x5-x3
Aineq =
1 -2 3 0
1 -3 2 0
-1 2 -3 -1
-1 3 -2 -1
1 -1 0 0
1 -1 0 0
-1 1 0 0
-1 1 0 0
So this is where I am stuck at this point.
1 commentaire
Mech Princess
le 23 Juil 2012
Hi. does any one know how to do this when the expressions in A has constants also? I tried the code and it gets errors because of the constants. Thanks
Réponse acceptée
Plus de réponses (1)
Andrei Bobrov
le 24 Fév 2012
xx = symvar(A);
Aineq = zeros(numel(A),numel(xx));
for j1 = 1:numel(A)
[v1,v2] = coeffs(A(j1),xx);
Aineq(j1,ismember(xx,v2)) = v1;
end
on Nick Drake comment: try code
xx = cat(1,xv ,yv,zv)
Aineq = zeros(numel(A),numel(xx));
for j1 = 1:numel(A)
[v1,v2] = coeffs(A(j1),xx);
Aineq(j1,ismember(xx,v2)) = v1;
end
on Nick Drake comment2, on PC (W7 32 bit, MATLAB R2011b):

Catégories
En savoir plus sur Common Operations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!