Pregunta

Estoy intentando realizar una media de hurgar en la basura. Estoy utilizando el código:

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

La última línea se deshace de dimensiones únicos.

Así como se puede ver que estoy un promedio de más de 300 puntos. Funciona bien, excepto para los momentos en que tengo un número total de puntos no es igual a un múltiplo de 144 * 300.

¿Hay alguna manera de hacer este trabajo promedio de hurgar en la basura, incluso cuando el número total de puntos no es un múltiplo de 144 * 300?

EDIT: Lo siento si mi pregunta sonó confuso. Para aclarar ...

Tengo un archivo con 43200 filas y 27 columnas. Soy promedio por binning 300 filas a la vez, lo que significa que al final me quedo con una matriz de tamaño 144-por-27 .

Mi código como lo escribí arriba funciona sólo cuando tengo exactamente 43.200 filas. En algunos casos tengo 43199, 43194, etc .. La función de cambio de forma que funciona cuando tengo un número total de filas que es un múltiplo de 300 (el tamaño bin). ¿Hay una manera de hacer este trabajo promedio de hurgar en la basura cuando mi número total de filas no es un múltiplo de 300?

¿Fue útil?

Solución

Creo comprender mejor el problema ahora ...

Si a son los datos leídos desde el archivo (de tamaño N-por-27 , donde N es idealmente 43.200), entonces creo que querría hacer lo siguiente:

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

Esto eliminará los puntos tales que el número de filas en a será un múltiplo de 300. A continuación, el cambio de forma y media debe trabajar. Tenga en cuenta que yo uso [] en la llamada a RESHAPE , lo que permite que averiguar cuál debe ser el número de columna.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top