我认为我没有问过这个问题,所以这个例子会让你更容易理解我的意思。
假设我有2个矩阵
A = [5,5; 7,7];
B = [2,2; 6,4];
另外两个矩阵,每个矩阵对应一个以上的矩阵。 让我们说
A' = [7,7; 9,9];
B' = [1,1; 10,5];
我需要构建一个新的矩阵,它将检查A'和B'中的每个像素,选择最大值,然后转到相应的矩阵并从那里提取值。
在这个例子中,我将获得这个newMat
newMat = [5,5; 6,7];
使用循环很容易完成,有没有办法不使用循环? 提前谢谢!
答案 0 :(得分:3)
您可以创建一个逻辑矩阵,其中Aprime
大于Bprime
,然后可以用来抓取A
或B
aprime_is_greater = Aprime > Bprime;
% Initialize C to B and replace values where Aprime was greater
C = B;
C(aprime_is_greater) = A(aprime_is_greater);
答案 1 :(得分:2)
这是另一种方法。让你的输入
A = [5,5; 7,7];
B = [2,2; 6,4];
Aprime = [7,7; 9,9];
Bprime = [1,1; 10,5];
然后
newMAt = (Aprime>Bprime).*A + (Aprime<=Bprime).*B;