L'attribution de la légende dans la boucle for Matlab
J'ai essayé de donner la légende dans la boucle, mais il écrase le déjà écrit la légende, comment pouvez insérer soit dans si l'état ou soit dans la boucle for. Confus
clear;
vin=10
for m=1:1:14;
vin=vin+10
for i=1:1:27
Wa_Ac = PVinv.CoreSizeModel();
PVinv.CoreSelect(Wa_Ac,i);
loss_ind_core= PVinv.InductorLossModel(PVinv.m_L_Selected);
if(i==1)
p=plot(vin,loss_ind_core,'--gs');
hold on
end
if(i==2)
p=plot(vin,loss_ind_core,'--rs');
end %...till i=27
legend(obj.m_Core_List(i).name);
xlim([10e3 90e3])
set(gca,'XTickLabel',{'10';'20';'30';'40';'50';'60';'70';'80';'90'})
grid on
xlabel('Vin');
ylabel('Power loss');
end
end
La fonction appelée
function obj = CoreSelect(obj, WaAc)
obj.m_Core_Available= obj.m_Core_List(i);
obj.m_L_Selected.m_Core = obj.m_Core_Available;
end
Les réponses ci-dessous sont correctes à vous suggérons de déplacement de la légende à l'extérieur de votre
Erreur:matrice de Cellules argument doit être une cellule de tableau de chaînes de caractères. En fait je boucle de 27 fois pour chaque m valeur.
for
boucle. Je voudrais simplement ajouter que vous devez déplacer tous vos traçage de commandes, à l'exception plot
à l'extérieur de la boucle. Par exemple, vous n'avez pas besoin de définir le x-/y-étiquettes sur chaque itération de la boucle, juste une fois à la fin de la boucle lorsque vous avez tracées toutes vos données.Erreur:matrice de Cellules argument doit être une cellule de tableau de chaînes de caractères. En fait je boucle de 27 fois pour chaque m valeur.
OriginalL'auteur mirage | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Créer une cellule de tableau pour stocker les noms de légende. Avant la
for
boucle de définir quelque chose commePuis, au cours de la boucle de remplissage de la cellule:
Après la
end
définir la légende:J'ai peut-être mal compris les indices (
m
vsi
) et comment ils se rapportent les noms, mais le point est que vous pouvez passer d'une matrice de cellules de la légende de la fonction à créer la légende à la fois.En est un exemple:
qui donnerait
vous pouvez utiliser une chaîne de matrice à la place d'une cellule (voir la section weizmann.ac.il/matlab/techdoc/ref/legend.html pour la légende de la documentation)
où est l'erreur à venir? J'ai édité 27 fois pour chaque valeur m
L'erreur était au point lors de la légende de la commande est exécutée. La légende a été de ne pas accepter les caractères de cellules comme arguments
Assurez-vous que vous assignez des chaînes de la cellule. Il semble que votre tableau de cellule n'est pas composé de chaînes de caractères.
OriginalL'auteur Taylor Southwick
Au lieu de la collecte de la légende de la chaîne, vous pouvez simplement régler le
DisplayName
-propriété dans votre parcelle de terrain de commandes. Aussi, vous pouvez collecter leslinespec
arguments dans une cellule de tableau pour éviter la duplication de code, c'est à direÇa a fonctionné, j'ai été en utilisant le si des instructions pour le faire..Mais comme j'ai déménagé mon ifelse des déclarations en dehors de la boucle for les choses travaillé
OriginalL'auteur Jonas
Face à cette situation, chaque fois que la boucle-je ajouter de la légende de la chaîne à une cellule de tableau de chaînes de caractères, par exemple
et puis afficher la légende, une fois, après la fin de la boucle:
OriginalL'auteur Max