avoid for loop in a specific code

Could anyone help me if there is any way to avoid for loop in the following code: Both Target and predicted_target are vectors with n rows and one column.
new_classes=cell(size(Target,1),1);
for i=1:size(Target,1)
if (strcmp(predicted_target(i),Target{i}))
new_classes{i}=strcat('c',Target{i});
else
new_classes{i}=strcat('E',Target{i});
end
end

3 commentaires

the cyclist
the cyclist le 10 Août 2019
Can you upload your data (or a representative sample) in a MAT file?
MA
MA le 10 Août 2019
imagine that my data is as simple as that:
predicted_t=[ '1'; '0'; '0'; '1'];
Target=[ '0'; '1'; '1'; '1'];
So, I am expecting the new classes to be:
{'E0'}
{'E1'}
{'E1'}
{'c1'}
Bruno Luong
Bruno Luong le 10 Août 2019
Modifié(e) : Bruno Luong le 10 Août 2019
@MA: You change cell array to char array, you change variable name predicted_target to predicted_t.
Please don't do that if you want getting exactly the code that works

Connectez-vous pour commenter.

 Réponse acceptée

Bruno Luong
Bruno Luong le 10 Août 2019
Modifié(e) : Bruno Luong le 10 Août 2019
predicted_target = {'1'; '0'; '0'; '1'};
Target = {'0'; '1'; '1'; '1'};
prefix = {'E'; 'c'}
new_classes = strcat(prefix(strcmp(predicted_target,Target)+1),Target)

1 commentaire

MA
MA le 10 Août 2019
Thank you. I just change the prefix, so the altered code is the following:
prefix=int2str(predicted_target==Target);
prefix(prefix=='1')='c';
prefix(prefix=='0')='E';
new_classes = strcat(prefix,Target);
new_classes=cellstr(new_classes);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Question posée :

MA
le 10 Août 2019

Commenté :

MA
le 10 Août 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by