Effacer les filtres
Effacer les filtres

subs(a,b,1) introduces variable b into a?

1 vue (au cours des 30 derniers jours)
Raman
Raman le 7 Oct 2014
Modifié(e) : Raman le 22 Déc 2014
Hi,
This is a peculiar issue. I am using sym variables. My variable system_matrix has no dependence on the sym variable l, but when I run the line:
system_matrix = subs(system_matrix,l,10)
system_matrix all of a sudden has l introduced! if I run the same line again, it gets rid of it.
Code: -----------------
syms m b k1 k2 l rho U C
syms s
M = eye(2); K_H = [(k1+k2)/(m*b),((k1-k2)/(2*m))-C*rho*U^2/(2*m);6*(k1-k2)/(m*b^2),3*(k1+k2)/(m*b)-3*C*rho*U^2/(2*m*b)];
system_matrix = s^2.*M + K_H;
% substitute for values
system_matrix = subs(system_matrix,m,15);
system_matrix = subs(system_matrix,k1,5000);
system_matrix = subs(system_matrix,k2,4000);
system_matrix = subs(system_matrix,b,1);
system_matrix = subs(system_matrix,l,10); % for some reason this introduces new l's into the equation?
system_matrix = subs(system_matrix,C,1);
system_matrix = subs(system_matrix,rho,1.25);
----------------
end code
At the end of this expression, system_matrix has the variable l in it, even though it never did before!
Anyone know what is going on?

Réponses (1)

Stefan Wehmeier
Stefan Wehmeier le 30 Oct 2014
I cannot reproduce this. If it happens (in which version ??), then it is clearly unexpected.
  1 commentaire
Raman
Raman le 22 Déc 2014
Modifié(e) : Raman le 22 Déc 2014
THis happens in 2012b. I simplified it to this:
syms m l;
system_matrix = [1,m/(10);1,1];
system_matrix = subs(system_matrix,l,10);
It appears that the function is replacing all instances of 10 with "l" instead of the other way.
I tried the same code in 2014a and it seems to be fixed.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by