avoid for loop in a specific code

2 views (last 30 days)
MA
MA on 10 Aug 2019
Commented: MA on 10 Aug 2019
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 Comments
MA
MA on 10 Aug 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 on 10 Aug 2019
Edited: Bruno Luong on 10 Aug 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

Sign in to comment.

Accepted Answer

Bruno Luong
Bruno Luong on 10 Aug 2019
Edited: Bruno Luong on 10 Aug 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 Comment
MA
MA on 10 Aug 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);

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!