Repeat each page of 3d matrix 24 times
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
So as part of a script I have:
totmelt(:,:,day)=daymelt2;
Daymelt2 is a 2d matrix, and day is the day of the year (1:365). As it stands I get a 3d matrix with 365 in the 3rd dimension, or 365 pages. But I need the output for each day to be repeated 24times in consecutive pages. So the first 24 pages are the first daymelt2 matrix, the next 24 the the second daymelt2 matrix.
Is there a way I can do this? Without post-processing by extracting every single page and using repmat.
Thank you
2 comentarios
Walter Roberson
el 29 de Abr. de 2013
So you want the output to be size(daymelt2,1) x size(daymelt2,2) x 365 x 24 ? Or size(daymelt2,1) x size(daymelt2,2) x (365*24) ?
Respuesta aceptada
Jan
el 29 de Abr. de 2013
Perhaps you want:
totmelt = repmat(daymelt2, 1, 1, 24*365);
Or:
totmelt = zeros(M, N, 24, 365); % With matchin M and N
...
totmelt(:, :, :, day) = repmat(daymelt2, 1, 1, 24);
...
totmelt = reshape(totmelt, M, N, 24*365);
2 comentarios
Bård Skaflestad
el 29 de Abr. de 2013
As you only need to repeat each page a fixed (and equal) number of times, you can also do something like this:
totmelt = % construct as normal
p = reshape(repmat(1:365, [24, 1]), [], 1);
totmelt = totmelt(:,:,p);
Más respuestas (1)
Andrei Bobrov
el 29 de Abr. de 2013
out = totmelt( :,:,kron(1:size(totmelt,2), ones(1,24)) );
0 comentarios
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!