我试图在我的单元格中找到数组,这些数组必须在它们的名字中分离出“HA”。我在这里找到了一个函数,但它不能解决我的问题。我的手机是这样的:
'HA1' 'HA1' 'HA1' 'HA1' 'HA1'
'HA2' 'HA2' 'HA2' 'HA2' 'HA2'
'HA3' 'HA3' 'HA3' 'HA3' 'HA3'
'HA4' 'HA4' 'HA4' 'HA4' 'HA4'
'HA5' 'HA5' 'HA5' 'HA5' 'HA5'
'HA6' 'HA6' 'HA6' 'HA6' 'HA6'
'HA7' 'HA7' 'HA7' 'HA7' 'HA7'
'HA8' 'WA1' 'WA1' 'WA1' 'WA1'
'HA9' 'WA2' 'WA2' 'WA2' 'WA2'
'HA10' 'WA3' 'WA3' 'WA3' 'WA3'
'HA11' 'WA4' 'WA4' 'WA4' 'WA4'
'DA1' 'WA5' 'WA5' 'WA5' 'WA5'
'DA2' [] [] [] 'WA6'
'DA3' [] [] [] 'WA7'
'DA4' [] [] [] 'WA8'
'DA5' [] [] [] 'WA9'
'DA6' [] [] [] 'WA10'
[] [] [] [] 'WA11'
[] [] [] [] 'WA12'我试过这个功能:
x = 'HA';
y = cellArray;
substrfind = @(x,y) ~cellfun(@isempty,strfind(y,x));
logicalArray = substrfind(x,y);我应该得到一个逻辑数组作为输出,这对我的问题非常有用。但是我得到了一条错误消息:“如果任何输入参数都是单元格数组,那么第一个必须是字符串的单元格数组,第二个必须是字符数组。”
我不明白错误是什么,因为第一个输入y是一个单元格数组,第二个x是一个字符。
我希望你们能帮我解决问题!谢谢你的期待!诚挚的问候
发布于 2014-02-21 10:46:15
假设C是您的单元格数组。那么你想做什么的一种方法就是这样:
>> C(cellfun('isempty', C)) = {''};
>> logicalArray = ~cellfun('isempty', strfind(C, 'HA'))strfind不接受某些值不是字符串的单元格数组。您的单元格数组碰巧有空值,但类型不对-- []是double,而不是char。这就是你犯错误的原因。
因此,我只需将每个空double替换为空char (''),然后使用strfind。
另一种解决这个问题的方法是:
>> logicalArray = cellfun(@(x)~isempty(strfind(x,'HA')), C)但这要慢得多。
https://stackoverflow.com/questions/21931954
复制相似问题