我需要解决以下问题: 我有两个矩阵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
感谢您的建议!
答案 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