How to merge matrix in a loop?

4 ビュー (過去 30 日間)
Akshay Sahu
Akshay Sahu 2022 年 10 月 28 日
コメント済み: Akshay Sahu 2022 年 10 月 29 日
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......

採用された回答

David Hill
David Hill 2022 年 10 月 28 日
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 件のコメント
Akshay Sahu
Akshay Sahu 2022 年 10 月 29 日
Thank you @David Hill, your algorithm worked as I want.

サインインしてコメントする。

その他の回答 (1 件)

KALYAN ACHARJYA
KALYAN ACHARJYA 2022 年 10 月 28 日
編集済み: KALYAN ACHARJYA 2022 年 10 月 28 日
% 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 件のコメント
KALYAN ACHARJYA
KALYAN ACHARJYA 2022 年 10 月 28 日
To store matrix or any other data type, cell array is much easier way to handle it.
Hope it helps!
Akshay Sahu
Akshay Sahu 2022 年 10 月 29 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by