2个不同大小的矩阵:如果矩阵1中的条件为真,则在矩阵2中进行操作

时间:2013-11-27 18:44:25

标签: matlab

我需要解决以下问题: 我有两个矩阵A和B(A = 480x640; B = 40x40)。 为了进一步解释,我采用较小的矩阵,因为我认为逻辑没有区别,即:

A = [1111; 1111; 1111; 1111];
B = [0 1; 1 0];

B的每个元素是与矩阵A的4个元素的对应关系。 例如:

B(1,1) = A(1:2,1:2)  

如果B的元素具有某个值,那么我想在A的对应元素中进行一些计算。 所以我想要这样的东西:

[N M] = size(A);
[O P] = size(B);

for i = 1:O
for j = 1:P

if B(i,j) > 0;

for k = 1:N
for l = 1:M  

"DO CALCULATIONS " in A(k:k+1,l:l+1)

end
end

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

你应该能够按照你想要的方式做一些事情。嵌套for循环的内部部分将返回您要查找的“子矩阵”

A = [1 2 3 4; 2 3 4 1; 3 4 1 2; 4 1 2 3];
B = [0 1; 1 0];

rowScale = size(A,1)/size(B,1);
colScale = size(A,2)/size(B,2);

assert(floor(rowScale) == rowScale & floor(colScale) == colScale,'Row and Column Sizes must be integer multiples')

for i = 0:size(B,1)-1
   for j = 0:size(B,2)-1
       if B(i+1,j+1) > 0
           subMatrix = A(i*rowScale+1:(i+1)*rowScale,j*colScale+1:(j+1)*colScale)
           % Do whatever calculations you need to do
       end
   end
end