删除元胞数组中的空行
deleting empty rows in a cell array
我有一个元胞数组 (10001x21)
,其中前 3 列的所有行都有数据。从列 4 to 21
中,我在特定行的某些单元格中有数据,而某些行可能完全为空。
我只想保留在 4 to 21
的某些列中有数据的行,并删除在列 (4:21)
中没有任何数据的所有空行。如有任何帮助,我们将不胜感激 case.Thanks.
这是在Matlab环境下
数据是这样的
'1Fb6' 2014 'F'[][][][][][][][][][]
'1Fc6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fd6' 2014 'F' [] [] [] [] [] 'ka1' [] [] [] []
'1Fk6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fy6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fz6' 2014 'F' [] [] 'na1' [] [] [] [] [] [] []
'1Fj6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fm6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fn6' 2014 'F' [] [] [] [] 'bo1' [] [] [] [] []
假设您的元胞数组名为 data
,维度为 [rows, columns]
。您可以使用以下代码在名为 new_data
的新矩阵中仅保留在列 4:21 中有一些数据的所有行:
new_data = data(~all(cellfun('isempty', data(:, 4:21)), 2), :);
分解:
cellfun('isempty', data(:, 4:21))
returns 大小为 [rows, columns-3]
的矩阵。 4:21 列中 data
中的任何空单元格都标记为 1,所有其他单元格都标记为 0。
~all(cellfun(...), 2)
returns 大小为 rows x 1
的向量。它采用之前的矩阵并查看每一行是否都是全 1 的元胞数组(换句话说,如果该行完全为空)。如果该行全为 1,则 all
函数 returns 为真。但是,由于NOT运算符(~),所有只有1的行实际上都标记为0,而所有其他行都标记为1。换句话说,标记为1的行是我们希望保留的行。
new_data = data(all(...), :)
只是 returns 数据矩阵,删除列 4:21. 中完全为空的任何行
我有一个元胞数组 (10001x21)
,其中前 3 列的所有行都有数据。从列 4 to 21
中,我在特定行的某些单元格中有数据,而某些行可能完全为空。
我只想保留在 4 to 21
的某些列中有数据的行,并删除在列 (4:21)
中没有任何数据的所有空行。如有任何帮助,我们将不胜感激 case.Thanks.
这是在Matlab环境下
数据是这样的
'1Fb6' 2014 'F'[][][][][][][][][][]
'1Fc6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fd6' 2014 'F' [] [] [] [] [] 'ka1' [] [] [] []
'1Fk6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fy6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fz6' 2014 'F' [] [] 'na1' [] [] [] [] [] [] []
'1Fj6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fm6' 2014 'F' [] [] [] [] [] [] [] [] [] []
'1Fn6' 2014 'F' [] [] [] [] 'bo1' [] [] [] [] []
假设您的元胞数组名为 data
,维度为 [rows, columns]
。您可以使用以下代码在名为 new_data
的新矩阵中仅保留在列 4:21 中有一些数据的所有行:
new_data = data(~all(cellfun('isempty', data(:, 4:21)), 2), :);
分解:
cellfun('isempty', data(:, 4:21))
returns 大小为[rows, columns-3]
的矩阵。 4:21 列中data
中的任何空单元格都标记为 1,所有其他单元格都标记为 0。~all(cellfun(...), 2)
returns 大小为rows x 1
的向量。它采用之前的矩阵并查看每一行是否都是全 1 的元胞数组(换句话说,如果该行完全为空)。如果该行全为 1,则all
函数 returns 为真。但是,由于NOT运算符(~),所有只有1的行实际上都标记为0,而所有其他行都标记为1。换句话说,标记为1的行是我们希望保留的行。new_data = data(all(...), :)
只是 returns 数据矩阵,删除列 4:21. 中完全为空的任何行