How to merge matrix in a loop?

4 visualizaciones (últimos 30 días)
Akshay Sahu
Akshay Sahu el 28 de Oct. de 2022
Comentada: Akshay Sahu el 29 de Oct. de 2022
Suppose I have four matrix
A,B,C and D. These all are (mx3) matrix where m is some number.
and I have to define a number as an user input which is N.
Now I want a merge matrix such that,
for N = 1
New_matrix = [A]
for N = 2
New_matrix = [A
B
C]
for N = 3
New_matrix = [A
B
C
D
A]
for N = 4
New_matrix = [A
B
C
D
A
B
C]
and so on......

Respuesta aceptada

David Hill
David Hill el 28 de Oct. de 2022
A=randi(10,4,3)
A = 4×3
10 2 9 7 7 4 10 5 1 5 9 2
B=randi(10,5,3)
B = 5×3
8 6 1 10 1 9 6 5 9 5 8 8 10 3 3
C=randi(10,6,3)
C = 6×3
1 6 4 9 4 2 7 5 6 9 5 4 3 2 5 1 2 7
D=randi(10,7,3)
D = 7×3
5 8 3 4 9 5 5 3 9 6 7 7 4 9 3 8 5 6 7 9 9
N=2;
newMatrix=generateMatrix(A,B,C,D,N)
newMatrix = 15×3
10 2 9 7 7 4 10 5 1 5 9 2 8 6 1 10 1 9 6 5 9 5 8 8 10 3 3 1 6 4
function newMatrix=generateMatrix(A,B,C,D,N)
n=2*N-1;
s=[size(A,1),size(B,1),size(C,1),size(D,1)];
newMatrix=repmat([A;B;C;D],ceil(n/4),1);
S=sum(s*floor(n/4))+sum(s(1:mod(n,4)));
newMatrix=newMatrix(1:S,:);
end
  1 comentario
Akshay Sahu
Akshay Sahu el 29 de Oct. de 2022
Thank you @David Hill, your algorithm worked as I want.

Iniciar sesión para comentar.

Más respuestas (1)

KALYAN ACHARJYA
KALYAN ACHARJYA el 28 de Oct. de 2022
Editada: KALYAN ACHARJYA el 28 de Oct. de 2022
% Just example
A=rand(4,3);
B=rand(4,3);
C=rand(4,3);
D=rand(4,3);
data_mat={A,B,C,D}; % Created to handle data easily
N=4 ; % Example or length of data_mat
data=cell(1,N); %Memory Pre-allocation
for i=1:N
data{i}=horzcat(data_mat{1:i});
end
data
data = 1×4 cell array
{4×3 double} {4×6 double} {4×9 double} {4×12 double}
You may look for cellfun also, please do the modification as per requirements.
  2 comentarios
KALYAN ACHARJYA
KALYAN ACHARJYA el 28 de Oct. de 2022
To store matrix or any other data type, cell array is much easier way to handle it.
Hope it helps!
Akshay Sahu
Akshay Sahu el 29 de Oct. de 2022
Yes, It's also correct for N=4. But N is not constant in my case. I want to change value of N according to my need.

Iniciar sesión para comentar.

Categorías

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

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by