how do I merge multiple matrices into one?

I have 50 1111 x 3 size matrics. I want to combine them into one final matrix such as all first rows from individual matrices are in first 50 rows and then all 2nd rows and so on. Also, for each set of rows it should insert a header row at the beginning.
How do I do this in Matlab?

댓글 수: 5

James Tursa
James Tursa 2021년 2월 25일
How are these 50 variables stored in MATLAB currently? As separately named variables? How do you get them into the workspace?
each of 50 matrix has 1111 rows and 3 columns. They are stored seperately with unique name.
Bob Thompson
Bob Thompson 2021년 2월 25일
편집: Bob Thompson 2021년 2월 25일
How are you creating the variables?
The only 'good' way of combining 50 unique variables (as far as I know) is manually, but it might be possible to index the results when you first make them so they don't need to be individual variables.
Is this for writing into an xlsx file? SInce you cannot create a numeric array that has header rows in the middle of it, and if you were to create a table() object all of the entries would have to be cells in order to permit the header rows to be in middle of it.
I have the header rows (numerical values) in another seperate matrix that I want to insert in resultant matrix.

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2021년 3월 2일
One approach
N = 4; %50 in your original
Rows = 2; %1111 in your original
%generate some data for illustration
M = arrayfun(@(ignore) randi(9,Rows,3), (1:N).', 'uniform', 0)
M = 4x1 cell array
{2×3 double} {2×3 double} {2×3 double} {2×3 double}
cell2mat(M) %for illustration
ans = 8×3
1 3 7 1 6 7 6 1 8 4 9 5 9 8 3 4 6 9 4 8 8 3 7 6
nrow = size(M{1},1);
headers = repmat(-(1:nrow).', 1, 3);
grouped = arrayfun(@(row) cell2mat(cellfun(@(C) C(row,:), M, 'uniform', 0)), 1:nrow, 'uniform', 0)
grouped = 1x2 cell array
{4×3 double} {4×3 double}
headered = [num2cell(headers,2).'; grouped]
headered = 2x2 cell array
{1×3 double} {1×3 double} {4×3 double} {4×3 double}
joint = cell2mat(headered(:))
joint = 10×3
-1 -1 -1 1 3 7 6 1 8 9 8 3 4 8 8 -2 -2 -2 1 6 7 4 9 5 4 6 9 3 7 6

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

질문:

2021년 2월 25일

답변:

2021년 3월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by