How to merge matrix in a loop?

3 views (last 30 days)
Akshay Sahu
Akshay Sahu on 28 Oct 2022
Commented: Akshay Sahu on 29 Oct 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......

Accepted Answer

David Hill
David Hill on 28 Oct 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

More Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 28 Oct 2022
Edited: KALYAN ACHARJYA on 28 Oct 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 Comments
KALYAN ACHARJYA
KALYAN ACHARJYA on 28 Oct 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 on 29 Oct 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.

Sign in to comment.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!