How to combine multiple nx1 size of matrix into one matrix

15 ビュー (過去 30 日間)
NG
NG 2014 年 8 月 12 日
コメント済み: tran thang 2015 年 10 月 10 日
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 件のコメント
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 日
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 日
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 件)

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 8 月 12 日
編集済み: Azzi Abdelmalek 2014 年 8 月 12 日

Joakim Magnusson
Joakim Magnusson 2014 年 8 月 12 日
編集済み: Joakim Magnusson 2014 年 8 月 12 日
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 件のコメント
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 日
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!

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

カテゴリ

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by