如何区分两个图片矩阵?

时间:2015-08-16 16:36:56

标签: matlab data-analysis matlab-deployment

我有一个图片矩阵A,其大小为200*3000 double。我还有另一个图片矩阵B,其大小为200*1000 double。矩阵1000的{​​{1}}列完全来自矩阵B的列。我的问题是:

如何获得矩阵A具有相同大小的矩阵C,但只保留矩阵A中列的原始值?我的意思是矩阵B的大小为C,但只有200*3000 double列的值与矩阵1000相同。其他B列将设置为另一个值2000,这是我的第二个问题,我应该为d设置的值是什么,以便图片矩阵d可以区分图片矩阵C

1 个答案:

答案 0 :(得分:2)

ismember'rows'选项一起使用。这是一个例子:

A = [1 2 3 4; 5 6 7 8]; %// example A
B = [3 10 1; 7 20 5];   %// example B
val = NaN;              %// example value to indicate no match

C = A; %// initiallize
ind = ismember(A.',B.','rows'); %// matching columns
C(:,~ind) = val; %// set non-matching columns to val

等效地,您可以将ismember替换为bsxfun,以便该行成为

ind = any(all(bsxfun(@eq, A, permute(B, [1 3 2])), 1), 3);

在此示例中,

A =
     1     2     3     4
     5     6     7     8
B =
     3    10     1
     7    20     5
C =
     1   NaN     3   NaN
     5   NaN     7   NaN