[英]Matlab - Remove zero rows in cell array
我有一個1x6的細胞陣列。 在單元格1-4和6中,我有一個包含字符串的5000x1單元格數組。 在第五個單元格中,我有一個5000x1的單元格數組,其中包含數字。 好吧,我想刪除第五個單元格中我有0的行。 為了確保這一點,很清楚:
字符串字符串字符串字符串35字符串
字符串字符串字符串字符串0字符串
字符串字符串字符串字符串42字符串
字符串字符串字符串字符串10字符串
字符串字符串字符串字符串0字符串
我在論壇中找到了一個類似的問題,用於1x2單元格,但是我無法弄清楚在這種特定情況下該如何做。
誰能幫我?
提前致謝。
假設您的單元格數組存儲在變量c
。 首先,我們可以使用邏輯運算確定元素5的哪些行不等於0
:
notZeros = (c{5} ~= 0);
然后,遍歷元素並應用邏輯索引以過濾出零行:
for k = 1:6
c{k} = c{k}(notZeros);
end
您也可以使用cellfun
。 它可能較慢,但也可能更具可讀性:
c = cellfun(@(c_el) c_el(notZeros),c,'UniformOutput',false);
“ 'UniformOutput',false
”是必需的選項,因為過濾器輸出矢量( 如函數所理解的那樣)是非均勻結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.