Dividir el conjunto de datos en un número específico de muestras mediante un bucle for.
Tengo una matriz de dimensión 35136-por-1 que contiene datos de potencia de 366 días, donde cada día tiene 96 mediciones. Quiero tomar una muestra de 252 días: los datos de potencia de “día 1 a día 7” son la primera muestra, los datos de potencia de “día 2 a día 8” son la segunda muestra, etc. Luego quiero remodelar mi matriz para obtener un tamaño [96 7 1 252].
He escrito el siguiente código, pero obtengo 36 muestras en lugar de 252.
m=7;
for j=1
sample([j:96*m],:)=solarpower_n([j:96*m],:);
y([(96*m)+1:96*(m+1)],:)=solarpower_n([(96*m)+1:96*(m+1)],:);
m=m+1;
for j=2:246
sample([(96*(j-1))+1:96*m],:)=solarpower_n([(96*(j-1))+1:96*m],:);
y([(96*m)+1:96*(m+1)],:)=solarpower_n([(96*m)+1:96*(m+1)],:);
m=m+1;
end
end
Quiero tomar una muestra de cada 7 días. Supongamos que D
es el número de días y M
es el número de mediciones de potencia en cada día. Para 252 días, M=[1,2,3,...,96]
y D=[1,2,...,252]
. Por lo tanto, la potencia del primer día, P1
, tiene una dimensión de 96*1. Quiero tomar sample1={P1,...,P7}, sample2={P2,...,P8} , .....,sample252={P246,.....,P252}
y tener un arreglo en 4-D de tamaño [96 7 1 252].
¿Cómo puedo lograr esto?
davy.ai
Necesitas modificar el bucle
for
en tu código para que haga un recorrido por los días, en lugar de ejecutarse una vez solamente paraj=1
. Aquí tienes una versión modificada de tu código que debería lograr lo que estás buscando:Esto debería crear una matriz de 4 dimensiones,
muestras
, con dimensiones[96 7 1 252]
, donde cada muestra es una matriz de 96 por 7 por 1. La llamadapermute
es necesaria para reorganizar la forma de la salida dereshape
y que coincida con lo que estás buscando.