Domanda

Sto cercando di eseguire una media binning. Sto usando il codice:

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

L'ultima riga si libera di dimensioni Singleton.

Quindi, come si può vedere che sto una media di oltre 300 punti. Funziona bene, tranne per i tempi quando ho un numero totale di punti non uguale a un multiplo di 144 * 300.

C'è un modo per rendere questo lavoro binning media anche quando il numero totale di punti non è un multiplo di 144 * 300?

Modifica Scusate se la mia domanda suonava confusa. Per chiarire ...

Ho un file con 43200 righe e 27 colonne. Sono averaging da binning 300 righe alla volta, il che significa che alla fine sono lasciato con una matrice di dimensioni 144-by-27 .

Il mio codice come ho scritto sopra funziona solo quando ho esattamente 43200 righe. In alcuni casi ho 43.199, 43194, ecc .. La funzione Reshape funziona quando ho un numero totale di righe che è un multiplo di 300 (la dimensione bin). C'è un modo per rendere questo lavoro binning media quando il mio numero totale di righe non è un multiplo di 300?

È stato utile?

Soluzione

Credo di capire meglio il problema ora ...

Se a è i dati letti dal file (di dimensioni N-by-27 , dove N è ideale 43.200), allora penso che si vorrebbe fare quanto segue:

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);

Questo eliminerà i punti tali che il numero di righe in a sarà un multiplo di 300. Allora la vostra rimodellare e media dovrebbero funzionare. Si noti che uso [] nella chiamata a RESHAPE , che gli permette di capire che cosa il numero di colonna deve essere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top