MATLAB: Comment stocker la valeur d’une boucle for dans un vecteur / matrice

J’ai une matrice N x M plus grande. Pour cet exemple, 4 x 4. J’ai une matrice a x b plus petite. Pour cet exemple, 2 x 2. Je multiplie par élément la plus petite matrice par la plus grande matrice partitionnée, puis résume les matrices résultantes. Cependant, je suis incapable de stocker les résultats de cette somme dans un vecteur (que je peux ensuite remodeler en matrice) ou directement dans une matrice. Voici mon code
 
clear all;
A = [0 0 0 0; 0 1 1 0; 0 -1 2 0; 0 0 0 0];
B = [-1 1; 1 0];
for i = 1:2:4
for j = 1:2:4
C = sum(sum(A(i:i+1, j:j+1) .*B))
end
end
 
Chaque itération de C produit 0,1, -1,2 ce qui est correct. Cependant, les réponses sont écrasées. J’ai également essayé diverses modifications du code ci-dessus, c’est-à-dire. initialiser C comme matrice et ajouter des boucles for pour y entrer des valeurs.
Je voudrais soit stocker les valeurs dans un vecteur [0, 1, -1, 2] ou une matrice [0 1; -1 2] Merci

Meilleure réponse

  • Le moyen le plus simple consiste à simplement ‘C’, puis sélectionnez uniquement les première et dernière lignes et colonnes:
     

    A = [0 0 0 0; 0 1 1 0; 0 -1 2 0; 0 0 0 0];
    B = [-1 1; 1 0];
    for i = 1:2:4
    for j = 1:2:4
    C(i,j) = sum(sum(A(i:i+1, j:j+1) .*B));
    end
    end
    C = C(1:2:end, 1:2:end)
    C = C([1 end], [1 end])
    C =
    0 1
    -1 -2