How to combine multiple nx1 size of matrix into one matrix

As topic mentioned, i want to combine a matrix from many nx1 size matrix, i would like to have a script
Many Thnkas, Alex

3 件のコメント

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 8 月 12 日
Can you explain with an example?
NG
NG 2014 年 8 月 12 日
For example, I got matrix A, A=[1;2;3], and B, B=[4;5;6;7]. I want to combine them to be matrix C, C=[1;2;3;4;5;6;7], but now i got many matrix with differnet number of rows. How can i combine them ? Thanks!
tran thang
tran thang 2015 年 10 月 10 日
Hi! You can reference my code! Good lucky! >> a{1} = [1 1 1;1 1 1]; >> a{1}
ans =
1 1 1
1 1 1
>> a{2} = [2 2 2;2 2 2]; >> a{3} = [3 3 3]; >> a{4} = [4 4 4;4 4 4;4 4 4]; >> a{5} = [5 5 5;5 5 5]; >> A = vertcat(a{:})
A =
1 1 1
1 1 1
2 2 2
2 2 2
3 3 3
4 4 4
4 4 4
4 4 4
5 5 5
5 5 5

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

 採用された回答

Matt J
Matt J 2014 年 8 月 12 日

1 投票

could you plz exlpain more about vertcat(matrices{:}); by showing an example.
>> matrices={[1,2;3 4],[5,6;7,8]};
>> vertcat(matrices{:})
ans =
1 2
3 4
5 6
7 8

6 件のコメント

NG
NG 2014 年 8 月 12 日
Sorry, i want to clarify that now i am using a loop to generate matrices out and then store them into a new matrix .Can i still use vertcat?
Matt J
Matt J 2014 年 8 月 12 日
編集済み: Matt J 2014 年 8 月 12 日
Yes, store the i-th vector to matrices{i} in the loop and then when the loop is finished, use vertcat as above.
NG
NG 2014 年 8 月 12 日
However, Matlab appears this one (In an assignment A(:) = B, the number of elements in A and B must be the same.) , how can i fix it ?
Matt J
Matt J 2014 年 8 月 12 日
編集済み: Matt J 2014 年 8 月 12 日
Sounds like you are not using cell array indexing. If you don't know what that means, you have some reading to do I'm afraid,
NG
NG 2014 年 8 月 12 日
Ok! Thanks !
Michael Haderlein
Michael Haderlein 2014 年 8 月 12 日
The first step to fix it is to show the code which is throwing this error ;-)

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

その他の回答 (3 件)

Joakim Magnusson
Joakim Magnusson 2014 年 8 月 12 日
編集済み: Joakim Magnusson 2014 年 8 月 12 日

1 投票

Where do you have your matrices? If you can get them into cell arrays like this:
matrices = cell(1,2);
matrices{1} = A;
matrices{2} = B;
C = [];
Then you could do like this:
for i = 1:size(matrices,2)
C = [C ;cell2mat(matrices(i))]
end
I'm not sure how you want to combine your matrices but hope this was at least a little helpful.

4 件のコメント

Michael Haderlein
Michael Haderlein 2014 年 8 月 12 日
If A, B, ... are in a cell array, you wouldn't merge them by a loop but rather by cell2mat(matrices').
Matt J
Matt J 2014 年 8 月 12 日
編集済み: Matt J 2014 年 8 月 12 日
cell2mat.m does use a loop. You could use vertcat, which is a builtin optimized function,
C=vertcat(matrices{:});
NG
NG 2014 年 8 月 12 日
Matt , could you plz exlpain more about vertcat(matrices{:}); by showing an example. Thank You!
Michael Haderlein
Michael Haderlein 2014 年 8 月 12 日
Thanks @Matt, I didn't use cell2mat a lot, so I didn't think about it too much. Your solution is very elegant.

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

Joakim Magnusson
Joakim Magnusson 2014 年 8 月 12 日
編集済み: Joakim Magnusson 2014 年 8 月 12 日

0 投票

Sorry, i want to clarify that now i am using a loop to generate matrices out and then store them into a new matrix .Can i still use vertcat?
NG, do you mean like this?
B = [];
for i = 1:10
A = magic(4);
A(:, 2:4) = [];
B = vertcat(B, A);
end

2 件のコメント

Matt J
Matt J 2014 年 8 月 12 日
That would not be recommendable. With B growing inside the loop, you will be doing a lot of repeated memory re-allocation.
Joakim Magnusson
Joakim Magnusson 2014 年 8 月 12 日
ah, okay!

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

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

質問済み:

NG
2014 年 8 月 12 日

コメント済み:

2015 年 10 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by