le calcul des moyennes dans MATLAB

Le calcul d'une moyenne d'un simple 1-D vecteur de données semble assez simple. En effet, la documentation MATLAB pour FILTRE heureusement revendications quelque chose comme:

Vous pouvez utiliser le filtre pour trouver un moyen sans
à l'aide d'une boucle for. Cet exemple trouve le moyen de
de 16 de l'élément de vecteur, à l'aide d'une fenêtre de taille 3:

D = [1:0.2:4]';
windowSize = 3;
F = ones(1,windowSize)/windowSize;
Df = filter(F,1,D);

Le résultat:

Image de brutes et les données filtrées tracer à partir de l'exemple ci-dessus http://www.tc.umn.edu/~vande642/photos/untitled.png

Pour mes fins, il y a deux choses ennuyeuses à propos de ce résultat: point de sortie n est la moyenne des points d'entrée de la n-(windowSize-1)..n (c'est à dire pas centré, comme en témoigne le décalage horizontal) et de points à la gauche de données disponibles sont traités comme des zéros.

FILTFILT traite à la fois de questions, mais a d'autres inconvénients. Il fait partie de la boîte à outils de Traitement du Signal, et il n'a pas bien avec des NaNs (que je voudrais exclus de la moyenne).

Certains les gens sur FEX, évidemment, avait les mêmes frustrations, mais il me semble étrange que quelque chose d'aussi simple nécessite un code personnalisé. Quelque chose qui me manque ici?

  • filtfilt ne dépend pas des autres, de Traitement de Signal boîte à outils des fonctions et m-Code. Ainsi, vous pouvez simplement copier-coller dans votre code évolution de vos besoins.
  • Pas sûr au sujet des droits d'auteur si vous ne possédez pas la SP boîte à outils. Mon petit doigt me dit que ce serait illégal.
InformationsquelleAutor Matt Mizumi | 2010-08-10