首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab在单元格数组中查找子字符串

matlab在单元格数组中查找子字符串
EN

Stack Overflow用户
提问于 2014-02-21 10:36:43
回答 1查看 5.8K关注 0票数 4

我试图在我的单元格中找到数组,这些数组必须在它们的名字中分离出“HA”。我在这里找到了一个函数,但它不能解决我的问题。我的手机是这样的:

代码语言:javascript
复制
'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'

我试过这个功能:

代码语言:javascript
复制
x = 'HA';
y = cellArray;
substrfind = @(x,y) ~cellfun(@isempty,strfind(y,x));
logicalArray = substrfind(x,y);

我应该得到一个逻辑数组作为输出,这对我的问题非常有用。但是我得到了一条错误消息:“如果任何输入参数都是单元格数组,那么第一个必须是字符串的单元格数组,第二个必须是字符数组。”

我不明白错误是什么,因为第一个输入y是一个单元格数组,第二个x是一个字符。

我希望你们能帮我解决问题!谢谢你的期待!诚挚的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 10:46:15

假设C是您的单元格数组。那么你想做什么的一种方法就是这样:

代码语言:javascript
复制
>> C(cellfun('isempty', C)) = {''};
>> logicalArray = ~cellfun('isempty', strfind(C, 'HA'))

strfind不接受某些值不是字符串的单元格数组。您的单元格数组碰巧有空值,但类型不对-- []double,而不是char。这就是你犯错误的原因。

因此,我只需将每个空double替换为空char (''),然后使用strfind

另一种解决这个问题的方法是:

代码语言:javascript
复制
>> logicalArray = cellfun(@(x)~isempty(strfind(x,'HA')), C)

但这要慢得多。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21931954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档