J'ai 2 matrices: V qui est carré MxM, et K qui est MxN. Appelant la dimension entre les lignes x
et la dimension entre les colonnes t
, j'ai besoin d'évaluer l'intégrale (somme) sur les deux dimensions de K fois une version t-décalée de V, la réponse étant une fonction du décalage (presque comme une convolution, voir ci-dessous). La somme est définie par l'expression suivante, où _{}
désigne les indices de sommation, et un zéro-padding d'éléments hors-limites est supposé:Sommation sans une boucle - MATLAB
S(t) = sum_{x,tau}[V(x,t+tau) * K(x,tau)]
je réussi à le faire avec une seule boucle, sur t
dimension (vectorisation la x
dimension):
% some toy matrices
V = rand(50,50);
K = rand(50,10);
[M N] = size(K);
S = zeros(1, M);
for t = 1 : N
S(1,1:end-t+1) = S(1,1:end-t+1) + sum(bsxfun(@times, V(:,t:end), K(:,t)),1);
end
J'ai des expressions semblables que je réussi à évaluer sans boucle, en utilisant une combinaison de conv2
et \ ou en miroir (retournement) d'une seule dimension. Cependant, je ne vois pas comment éviter une boucle for dans ce cas (malgré la ressemblance apparente à la convolution).
Quelles sont les limites de sommation sur tau? Je suppose que je pourrais comprendre avec votre code ... –
Peu importe aussi longtemps qu'il couvre tous les éléments non-nul de V (comme je l'ai dit, V est supposé être zéro-rembourré à gauche et à le droit) –
Votre code me donne l'erreur 'Erreur en utilisant + les dimensions de la matrice doivent être d'accord. ' –