我有一个字符串的单元格数组,我需要为它们分配一个值。
interval = {'Active', 'Active', 'Active', 'Active', 'Active', 'Active', 'Rest', ...
'Rest', 'Rest', 'Rest','Active', 'Active', 'Active', 'Active'}
如何为Active分配值1,为Rest分配0? 我试过用这个:
intervalNum = zeros(length(interval), 1);
for n = 1:length(interval)
if interval(n) == 'Active'
i = 1;
else
i = 0;
end
intervalNum(n) = i;
end
但它显示错误: 未定义的运算符' =='对于类型' cell'的输入参数。
我认为错误是由于if语句"如果interval(n)==" active""但无法弄清楚出了什么问题。
请帮忙。谢谢!
答案 0 :(得分:3)
要比较字符串,您需要使用此处指定的strcmp函数:https://uk.mathworks.com/help/matlab/ref/strcmp.html
for n = 1:length(interval)
if strcmp(interval{n},'Active')
i = 1;
else
i = 0;
end
intervalNum(n) = i;
end
甚至更好,删除循环并使用Luis Mendo建议的方法:
intervalNum = cellfun(@(x) strcmp(x, 'Active'), interval)
intervalNum = ismember(interval, 'Active'); %Alternative provided by Luis Mendo
或BillBokeey建议的方法:
intervalnum(strcmp('Active',interval))=1