从相应的最大矩阵中选择值

时间:2016-01-15 23:40:37

标签: matlab matrix

我认为我没有问过这个问题,所以这个例子会让你更容易理解我的意思。

假设我有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];

使用循环很容易完成,有没有办法不使用循环? 提前谢谢!

2 个答案:

答案 0 :(得分:3)

您可以创建一个逻辑矩阵,其中Aprime大于Bprime,然后可以用来抓取AB

中的值
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;