簡體   English   中英

Matlab-刪除單元格數組中的零行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM