Info
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Subscripted assignment dimension mismatch when using coeffs command
    5 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
dear all
i have code like below:
clc
clear all
syms  q(i) teta(i) eb(i)
tetad = sym('tetad', [1 2], 'real');
ebd   = sym('ebd',   [1 2], 'real');
qd    = sym('qd',    [1 2], 'real');
i=2;
    wl(:,:,i)=[-sin(q(i))*tetad(i)-cos(q(i))*sin(teta(i))*cos(teta(i))*qd(i)+cos(q(i))*sin(teta(i))*ebd(i);cos(q(i))*tetad(i)-sin(q(i))*sin(teta(i))*cos(teta(i))*qd(i)+sin(q(i))*sin(teta(i))*ebd(i);((sin(teta(i)))^2)*qd(i)+cos(teta(i))*ebd(i)];
Ecollected=collect(wl(:,:,2),[qd(2),tetad(2),ebd(2)])
for i=1:size(wl,1)
    w(i,:)=coeffs(Ecollected(i),[qd(2),tetad(2),ebd(2)])
end
at end i get error Subscripted assignment dimension mismatch.
and answer should be like this :
[ cos(q(2))*sin(teta(2)), -sin(q(2)), -cos(q(2))*cos(teta(2))*sin(teta(2))] [ebd  ]
[ sin(q(2))*sin(teta(2)),  cos(q(2)), -cos(teta(2))*sin(q(2))*sin(teta(2))]*[tetad]
[cos(teta(2))         ,                0,                   sin(teta(2))^2] [qd   ]
i understand why i get this error and that is because of Ecollected(3) that have 2 value [cos(teta(2) sin(teta(2))^2] and it cant fit in 3 column and it should be like [cos(teta(2) 0 sin(teta(2))^2] and 2 other Ecollected(2) ,Ecollected(1) works fine
i really appreciated if someone can help me
0 commentaires
Réponses (1)
  Walter Roberson
      
      
 le 12 Déc 2017
        [wtemp, vtemp] = coeffs(Ecollected(i),[qd(2),tetad(2),ebd(2)]);
[~, idx] = ismember(vtemp, [qd(2),tetad(2),ebd(2)]);
w(i, idx) = wtemp;
0 commentaires
Cette question est clôturée.
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

