matlab - 在 MATLAB 中删除 2,n 元胞数组中的空单元格

标签 matlab cell

我有一个包含两列和几行的单元格数组。 当我使用

data = data(~cellfun('isempty', data)) 

它删除空单元格并创建一个单元格数组 前两行现在都在一行中。我希望他们 仍然排成两排。我怎么能这样做呢?

更清楚地说:

data{i, 1} = subdata_1
data{i, 2} = subdata_2 

其中 subdata_1 和 2 是进一步的元胞数组。 因此元胞数组 data 将包含两列和几行, 其中每个单元格都是另一个单元格数组。有些行将为空[] 当我删除这些空单元格时,data 将不再包含 两列和几行,但只有 1 列。我怎样才能保留 数据元胞数组的 N x 2 结构?

最佳答案

当您仅从一行中删除一列时,结果将是一个向量而不是一个 2 x N 数组,因为 MATLAB 无法确定维数。

a = [1, 2, 3; 4 5 6].';
size(a)
%   3   2

a = a(a ~= 4);
size(a)
%   5   1

您需要做的是删除整行。现在要确定哪些行取决于您期望的行为。

因此,如果我们设置一些示例数据:

data = {1, 2, []; [], 3, []}.';
%   [1]    []
%   [2]   [3]
%    []    []

如果您想删除任何包含空单元格的行

result = data(~any(cellfun('isempty', data), 2), :);
%   [2]   [3]

如果您想删除包含所有空单元格的行

result = data(~all(cellfun('isempty', data), 2), :);
%   [1]    []
%   [2]   [3]

关于matlab - 在 MATLAB 中删除 2,n 元胞数组中的空单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808595/

相关文章:

regex - 从文本文件中提取特定数据

matlab - 我可以在 Matlab 中抑制函数的命令窗口输出吗?

iOS:无法编译连接:Cell 中的 UIImageView

ios - swift 3 在tableView 中按下了哪个单元格按钮

java - 带有请求参数和内容正文的 Web 请求

MATLAB 编译器许可

R 或 MATLAB : permute a large sparse matrix into a block diagonal matrix

ios - 可以在 UICollectionView 中自定义单元格吗?

excel - 如何计算,如果某个范围内的任何单元格包含一个值,则进行求和,否则不显示任何内容

arrays - 连接单元格