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

Matlab 如何区分这两个图片矩阵?,matlab,data-analysis,matlab-deployment,Matlab,Data Analysis,Matlab Deployment,我有一个图片矩阵a,它的大小是200*3000倍。我还有另一个矩阵B,它的大小是200*1000倍。矩阵B的1000列正好来自矩阵A的列。我的问题是: 如何获得一个矩阵C,该矩阵的大小与矩阵a相同,但只保留矩阵B中列的原始值?我的意思是矩阵C的大小是200*3000双倍,但只有1000列的值与矩阵B的值相同。其他2000列将被设置为另一个值d,这是我的第二个问题,我应该为d设置什么值,以便图片矩阵C可以与图片矩阵A区分开来?与'rows'选项一起使用。下面是一个例子: A = [1 2 3 4;

我有一个图片矩阵
a
,它的大小是
200*3000倍
。我还有另一个矩阵
B
,它的大小是
200*1000倍
。矩阵
B
1000列正好来自矩阵
A
的列。我的问题是:

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

'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
替换为,使该行变为

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

我想你是对的,但这是非常内存成本。它不能在我这边工作,因为内存问题。有没有其他方法可以避免内存问题。