2010-10-12 5 views
-1

hey les gars, j'ai eu quelques difficultés ici. C'est un problème d'algorithme de codage purement. OK, le programme est illustré ci-dessous:Calcul matriciel 4D, problème de codage Matlab

for f=1:(nFrames-1) 
    h=histogram(imgYuv(:,:,1,f)); 
    j=histogram(imgYuv(:,:,1,f+1)); 
    X=abs(h-j)/256; %normalize the difference 
    S=sum(X); 
end 

Fondamentalement, je souhaite calculer la différence entre deux éléments adjacents et stocker le résultat de la somme dans une matrice 1-D S. Mais le résultat que j'ai obtenu du programme ci-dessus est un seul nombre. Je m'attendais à ce que ce soit un tableau 1-D parce que f varie de 1 à nFrames-1. Quelqu'un peut-il m'aider avec ça? Je vous remercie!

+1

la dernière ligne devrait être: 'S (f) = somme (X) ; 'supposant que le vecteur' S' est déjà pré-alloué – Amro

+0

Merci Amro! Ça fonctionne maintenant! – view

+0

@Amro, pourquoi ne pas le soumettre comme réponse? – yuk

Répondre

0

La dernière ligne de la boucle for doit être:

for f=1:(nFrames-1) 
    %# ... 
    S(f) = sum(X); 
end 

en supposant que le vecteur S est déjà préaffectées: S = zeros(nFrames-1,1);

+0

Merci Amro. Ça marche! – view