2016-03-14 1 views
0

Je voudrais exporter les réponses d'une équation de l'ordre de 2 dans un vecteur. L'entrée est R01 et la variable est n.
Le problème est là où je veux « double » le symbole pour chaque étape de i, je reçois l'erreur suivante:Vectoriser un symbole avec plus d'une valeur dans une boucle for dans MATLAB

In an assignment A(I)=B, the number of elements in B and I must be the same.

Il n'y aura pas d'erreur si je n'utilise une boucle. Quelle est mon erreur et comment puis-je le modifier que je pourrais obtenir les données comme une matrice ou un vecteur.

R01=[0.07941 0.07942 0.07952 0.07946 0.07951 0.07947] 

syms n 
for i=1:length(R01) 
    eq3=((1+n)^2)*R01(i)-(n-1)^2 
    sol1=solve([eq3]); 
    nsol(i)=double(sol1); 
end 
+0

Il y a tellement de questions qui expliquent déjà ce message d'erreur, [par exemple celui-ci] (http://stackoverflow.com/q/33871530/2732801) – Daniel

+0

Merci Daniel. J'ai compris le problème mais la solution n'était pas claire pour moi. Cependant, la compréhension a aidé à le modifier pour mieux. Je ne sais pas si la solution que j'ai écrite dans un post est un moyen efficace ou pas, mais ça marche d'une manière ou d'une autre. des suggestions pour le rendre plus efficace? – Hamed

+0

Les solutions alternatives utilisent un tableau de cellules 'nsol {i} = double (sol1);' ou une matrice 'nsol (i,:) = double (sol1);'. Ce dernier ne fonctionne que lorsque vous avez toujours le même nombre de solutions. – Daniel

Répondre

1

Le moyen efficace de résoudre le problème (par Daniel):

syms n 
for i=1:length(R01) 
    eq3=((1+n)^2)*R01(i)-(n-1)^2 
    sol1=solve([eq3]); 
    nsol(i,:)=double(sol1); 
end