Inserting columns of one matrix between the columns of another matrix

4 visualizaciones (últimos 30 días)
Hello,
I have two matrices as follows :
Sorted_grid of size 24x365
Index of size 24x365
I would like to create a matrix called "combined" of size 24x730
where the first column of combined is the first column of index followed by the first column of sorted_grid and so on
I have tried everything from loops, reshape to horzcat but I still have no solution and would appreciate any help.
Thank you!

Respuesta aceptada

Davide Masiello
Davide Masiello el 9 de Mzo. de 2022
Editada: Davide Masiello el 9 de Mzo. de 2022
You can do that using a for loop
clear,clc
sorted_grid = rand(24,365);
index = rand(24,365);
combined = [zeros(size(sorted_grid)),zeros(size(index))];
idx = 0;
for col = 1:2:2*size(sorted_grid,2)-1
idx = idx+1;
combined(:,col) = index(:,idx);
combined(:,col+1) = sorted_grid(:,idx);
end
EDIT:
More efficient and elegant code
clear,clc
sorted_grid = rand(24,365);
index = rand(24,365);
combined = [zeros(size(sorted_grid)),zeros(size(index))];
combined(:,1:2:end-1) = index;
combined(:,2:2:end) = sorted_grid;
  3 comentarios
Davide Masiello
Davide Masiello el 9 de Mzo. de 2022
No problem. Since I have edited it a couple of times, make sure that you are using the latest version (the one appearing while I am writing this comment).
Davide Masiello
Davide Masiello el 9 de Mzo. de 2022
Sorry, I edited it again adding a better solution using matrix indexing and getting rid of the for loop.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by