如何区分这两个图片矩阵?

How to distinguish the two picture matrices?

我有一个图片矩阵A,它的大小是200*3000 double。而我还有一个图片矩阵B,它的大小是200*1000 double。矩阵 B1000 列恰好来自矩阵 A 的列。我的问题是:

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

使用 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