strings comparison with if then in array
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Conrad
2012-7-12
编辑:Conrad
2012-7-12
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 个评论
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Environment and Settings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!