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