看板 MATLAB 關於我們 聯絡資訊
大家好,我剛學用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://www.ptt.cc/bbs/MATLAB/M.1440494971.A.C81.html
celestialgod: cellfun(@(x) length(x)==4, DD) 08/25 17:35
celestialgod: or cellfun(@length, DD)==4 08/25 17:36
可以了耶! 原來要這樣用cellfun啊! 實在太感謝了 (跪 那如果是文中BB那種情況的話有辦法嗎?? 再感謝一次!! ※ 編輯: mmcci (140.115.47.41), 08/25/2015 17:42:56
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
celestialgod: 把*改成+就好,剛剛有想到 08/25 17:58
jatj: 我好像看過書 cellfun有時不會比for loop快 08/26 11:12
celestialgod: cellfun只是寫起來漂亮XD 08/29 01:58
sunev: 不用再設一個暫存迴圈變數,也不用考慮變數的size 08/29 05:54
celestialgod: 對,而且自動preallocate memory 08/29 10:31