我有两个单元格数组。
A(290*6)
和B(300*6);
两个数组中的第一列是相同的。我使用'ismember'比较了两个单元格数组的第一列。我想这样做;在单元格数组(A)中缺少单元格元素的地方,我必须添加一个缺少元素的行。在Matlab中可以吗?
答案 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中的行在哪里缺失。