作者mmcci (mmcci)
看板MATLAB
标题[讨论] 找到cell中特定长度字串的方法?
时间Tue Aug 25 17:29:28 2015
大家好,我刚学用matlab没多久,遇到一个有关cell的问题想请教大家
标题可能不太清楚,我直接举例
我现在有一个cell,里面都是文字
DD={'thisnot' 'this' 'nothis' 'thiswrong' 'this'};
我希望找出只有 this 这个字的元素的位置
我设想的方法是找出字串长度为4的元素
尝试过length(DD) length(cell2mat(DD)) 和cellfun等方法
想当然都不行
现在所使用的方法靠硬干,用回圈逐个找
a=length(cell2mat(DD(i))); a==4
但我觉得这样程式很长又不方便
因此想请教各位大神,有没有更好的方法?
另外想问
如果cell所有元素的字串长度都一样,像下面
BB={'this_11' 'this_no' 'no_this' 'this_12' 'this_no'}
这种情况下我有甚麽方法可以找到 this_数字 这个格式的元素位置了?
拜托各位指点迷津...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.115.47.41
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1440494971.A.C81.html
1F:→ celestialgod: cellfun(@(x) length(x)==4, DD) 08/25 17:35
2F:→ celestialgod: or cellfun(@length, DD)==4 08/25 17:36
可以了耶! 原来要这样用cellfun啊! 实在太感谢了 (跪
那如果是文中BB那种情况的话有办法吗??
再感谢一次!!
※ 编辑: mmcci (140.115.47.41), 08/25/2015 17:42:56
3F:→ celestialgod: 第二个应该是regexp(BB, 'this_\d*') 08/25 17:38
C大你真的是我的大恩人
但我发现用'\d*'这样的话会连 this_no 这种後面接字母的也找出来
所以我只用'\d',这样就能成功找出 this_数字 的元素了
实在太感谢你啦 (再跪
※ 编辑: mmcci (140.115.47.41), 08/25/2015 17:50:04
4F:→ celestialgod: 把*改成+就好,刚刚有想到 08/25 17:58
5F:→ jatj: 我好像看过书 cellfun有时不会比for loop快 08/26 11:12
6F:→ celestialgod: cellfun只是写起来漂亮XD 08/29 01:58
7F:推 sunev: 不用再设一个暂存回圈变数,也不用考虑变数的size 08/29 05:54
8F:→ celestialgod: 对,而且自动preallocate memory 08/29 10:31