gpt4 book ai didi

arrays - matlab 在元胞数组中查找子字符串

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:28 25 4
gpt4 key购买 nike

我试图在我的单元格中找到名称中必须包含“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 是字符。

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

最佳答案

假设 C 是您的元胞数组。那么做你想做的事情的一种方法是:

>> C(cellfun('isempty', C)) = {''};
>> logicalArray = ~cellfun('isempty', strfind(C, 'HA'))

strfind 不接受某些值不是字符串的元胞数组。您的元胞数组恰好有空值,但类型错误 -- []double,而不是char。这就是您收到该错误的原因。

所以,我只是用空字符 ('') 替换每个空的 double,然后使用 strfind

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

>> logicalArray = cellfun(@(x)~isempty(strfind(x,'HA')), C)

但是这样会慢很多。

关于arrays - matlab 在元胞数组中查找子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com