如何在Matlab中的单元格数组之间添加行?

时间:2014-03-13 07:48:40

标签: matlab cell-array

我有两个单元格数组。

A(290*6)B(300*6);

两个数组中的第一列是相同的。我使用'ismember'比较了两个单元格数组的第一列。我想这样做;在单元格数组(A)中缺少单元格元素的地方,我必须添加一个缺少元素的行。在Matlab中可以吗?

2 个答案:

答案 0 :(得分:0)

将行插入现有矩阵或单元格数组并不容易;构建一个新的并且适当地填充它会更容易。

在单元格数组B中找到A的第一列内容的位置:

[aa,bb] = ismember([A{:,1}],[B{:,1}]);

创建一个新的空单元格数组:

C = cell(length(B),size(A,2))

填写:

C(:,1)=B(:,1)
C(bb,2:end) = A(aa,2:end);

例如,给定此A(" 3"行丢失)

[1]    [3]
[2]    [5]
[4]    [3]

这个B:

[1]
[2]
[3]
[4]

返回:

[1]    [3]
[2]    [5]
[3]     []
[4]    [3]

用前一行填充空白区域(这仅在空行不连续且C的第一行非空时才有效):

n = setdiff(1:length(C),bb)
C(n,2:end) = C(n-1,2:end);

答案 1 :(得分:0)

我认为你可以直接使用setdiff

的第二个输出
[d,i] = setdiff(B(:,1),A(:,1))

i将告诉您A中的行在哪里缺失。