2017-05-22 1 views
1

j'ai écrit cette boucle pour tracer chaque ligne des résultats et je reçois le message d'erreurTerrain plusieurs lignes (boucle à travers les styles de ligne dans le réseau de cellules) dans Matlab

erreur à l'aide de terrain. Premier argument de données invalide.

il semble donc bien que cette

test=rand(5,6); 
xint=[1:1:6]; 
LineSpec = {'-y', '--m', ':c', '-r.', '-b', ':s'}; 

for ii=1:5, 
    plot(xint,test(ii,:),LineSpec(ii),'linewidth',2); 
    hold on; 
    legend_str{ii} = num2str(ii); 
end 

Si je plot(xint,test(ii,:),'-y','linewidth',2) il fonctionne. Mais comment puis-je éviter l'erreur lors de la boucle à travers les styles de ligne?

+0

Copie possible de [Pourquoi mon tracé ne fonctionne pas en boucle pour différentes représentations graphiques?] (Https://stackoverflow.com/questions/44151168/why-my-plot-is-not-working-in-loop- for-different-graph-representations) – Wolfie

+0

@Wolfie, je pense que vous avez tort ici. Cette question est plus ancienne donc il ne peut pas être une copie d'une question plus récente ... – EBH

+0

From meta: * "Si la nouvelle question est une meilleure question ou a de meilleures réponses, alors votez pour fermer l'ancienne en tant que doublon de la nouveau. "* [lien pour poster ici] (https://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its-much- nouveau-et-ha). L'autre question a une réponse acceptée et upvoted, donc les futurs utilisateurs savent que la réponse a fonctionné? – Wolfie

Répondre

1

Vous devriez écrire:

plot(xint,test(ii,:),... 
     LineSpec{ii},... 
     'linewidth',2); 

LineSpec est une matrice de cellules, de sorte LineSpec(ii) retourne une cellule, alors que plot demande un tableau de caractères en tant que propriétés de ligne.

vous pouvez voir la différence lorsque vous appelez LineSpec:

>> LineSpec{1} 
ans = 
-y 
>> LineSpec(1) 
ans = 
    '-y' 

Lorsque la sortie est une cellule alors la réponse est en retrait et a les marques guillemets simples.