J'ai la matrice de cellules:Comment remplacer tous les éléments d'un tableau qui satisfont une condition?
im = {'A+','B-','B+','A+'; 'A-','B-', NaN, 'A+'};
Je veux boucle à travers chaque ligne pour voir ceux qui ont à la fois des sommes de « A 'et » B égal à 2. Ensuite, je remplacer ces lignes avec NaN. J'ai le code:
for ii = 1: size(im,1)
if (sum(strcmp('A+', im), 2) + sum(strcmp('A-', im), 2)) == 2 & (sum(strcmp('B+', im), 2) + sum(strcmp('B-', im), 2))== 2
im{ii, 1} = NaN;
im{ii, 2} = NaN;
im{ii, 3} = NaN;
im{ii, 4} = NaN;
end
end
Quand je supprimer la 2e rangée de im
, je reçois les ans: im = {NaN, NaN, NaN, NaN}
. Cependant, quand j'inclus la 2ème rangée, im
reste tel qu'il est à l'origine. S'il vous plaît, ce qui pourrait être mauvais avec mon code? Deuxièmement, y a-t-il une meilleure façon de remplacer les éléments?
Toute aide ou suggestion s'il vous plaît ??? Merci beaucoup.
Puisque vous ne dites pas Matlab quoi faire au cas où la somme n'est pas 2 pour A et B, il reste inchangé, comme vous l'observez. Vous pouvez ajouter une instruction 'elseif' dans votre boucle pour prendre soin de ce cas. –
Pour corriger votre code, modifiez les conditions comme ceci:' if sum (strcmp ('A +', im (ii, :))) + .. ..' –