将矩阵元素与另一矩阵中的对应块进行比较

时间:2016-10-20 14:31:03

标签: matlab matrix compare-and-swap

我有像X这样的4 * 4矩阵和像A这样的2 * 2矩阵。

 X= x11   x21   x31   x41          A=   1    0
    x12   x22   x32   x42               0    1
    x13   x23   x33   x43
    x14   x24   x34   x44

我将X分为4个2 * 2块,代码如下:

  Y=X;
  sx=size(X);
  mask=logical([1 1;1 1]);
  for i=1:2:sx(1)
      for j=1:2:sx(2)
         px=X(i:i+1,j:j+1);
     end 
 end 

现在我必须将矩阵A的每个元素与矩阵X的相应块进行比较。

 If the first element of matrix A is zero, then x11 should be lower than x22.
 if not, I should swap them with each other.


 If the first element of matrix A is one ,then x11 should be greater than x22.
 if not,I should swap them with each other.

1 个答案:

答案 0 :(得分:0)

我认为您应该能够在循环中添加此代码。

if A(1,1)==0 & px(2,2)>px(1,1)
    [px(1,1), px(2,2)] = deal(px(2,2),px(1,1));
elseif A(1,1)==1 & px(2,2)<px(1,1)
    [px(1,1), px(2,2)] = deal(px(2,2),px(1,1));
end

PS。我认为有更好的方法从较大的子矩阵中选择一个子矩阵,但现在无法想到它。