Question

Je suis en train d'effectuer une moyenne de binning. Je suis en utilisant le code suivant:

Avg = mean(reshape(a,300,144,27));
AvgF = squeeze(Avg);

La dernière ligne se débarrasse des dimensions singleton.

Alors que l'on peut voir que je suis en moyenne de plus de 300 points. Il fonctionne très bien, sauf pour les moments où j'ai un nombre total de points ne correspond pas à un multiple de 144 * 300.

Y at-il moyen de faire ce travail moyen binning même lorsque le nombre total de points est pas un multiple de 144 * 300?

EDIT: Désolé si ma question semblait confus. Pour clarifier ...

J'ai un fichier avec 43200 lignes et 27 colonnes. Je moyennage par binning 300 lignes à la fois, ce qui signifie à la fin je suis resté avec une matrice de taille 144 par 27 .

Mon code comme je l'ai écrit ci-dessus fonctionne que lorsque j'ai exactement 43200 lignes. Dans certains cas, j'ai 43199, 43194, etc. .. La fonction fonctionne Reshape quand j'ai un nombre total de lignes est un multiple de 300 (la taille du bac). Y at-il un moyen de faire ce travail moyen binning lorsque mon nombre total de lignes n'est pas un multiple de 300?

Était-ce utile?

La solution

Je pense que je comprends mieux le problème maintenant ...

Si a est les données lues à partir du fichier (de taille N par 27 , où N est idéalement 43200), alors je pense que vous voulez faire ce qui suit:

nRemove = rem(size(a,1),300);  %# Find the number of points to remove
a = a(1:end-nRemove,:);        %# Trim points to make an even multiple of 300
Avg = mean(reshape(a,300,[],27));
AvgF = squeeze(Avg);

Ceci enlèvera des points tels que le nombre de lignes a sera un multiple de 300. Ensuite, votre Reshape et moyenne devrait fonctionner. Notez que j'utilise [] dans l'appel à RESHAPE , ce qui laisse comprendre ce que le nombre de colonne doit être.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top