strings comparison with if then in array
1 view (last 30 days)
Show older comments
Dear all,
Although I've already found a couple of posts on digits and strings together in cell arrays, I couldn't figure out how to explain my issue here.
I have a cell array alpha:
alpha = 383 x 8 cell
column 7 has strings ('miss' or 'incorrect'), the rest has integers.
I simply want to change the value in column 1 every time the correspondent value in column 7 has the label 'miss':
for x=1:383;
if alpha{x,7} == 'miss' | alpha{x,2} == 11; alpha{x,1} = 33; end
if ...
if ...
end
The error I get is:
??? Error using ==> eq MAtrix dimensions must agree
Is it referring to the fact that eq doesn't work for strings? I'm not so sure, because when I remove the for loop, and give a unique value to the x variable, then command works. Also, when I use the for loop, the x value in the Workspace shows the value 1, and not the requested 383. So I guess it is in the way I'm organizing the {} brackets.
I guess it's something silly I cannot see!
Any suggestions would be highly appreciated.
Sincerely,
Udiubu
0 Comments
Accepted Answer
Conrad
on 12 Jul 2012
Edited: Conrad
on 12 Jul 2012
Hi Udiubu, you can use strcmp:
strcmp(alpha(x,7),'miss')
You can also get rid of the for loop by using logical indexing; your first test will be
strcmp(alpha(:,7),'miss')|cell2mat(alpha(:,2))==11
so the for loop is replaced by
alpha(logical(strcmp(alpha(:,7),'miss')|cell2mat(alpha(:,2))==11),1) = {33};
5 Comments
More Answers (1)
See Also
Categories
Find more on Environment and Settings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!