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))endend
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:4for j = 1:2:4C(i,j) = sum(sum(A(i:i+1, j:j+1) .*B));endendC = C(1:2:end, 1:2:end)C = C([1 end], [1 end])C =0 1-1 -2