How to combine multiple nx1 size of matrix into one matrix
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
NG
el 12 de Ag. de 2014
Comentada: tran thang
el 10 de Oct. de 2015
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 comentarios
tran thang
el 10 de Oct. de 2015
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
Respuesta aceptada
Matt J
el 12 de Ag. de 2014
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 comentarios
Michael Haderlein
el 12 de Ag. de 2014
The first step to fix it is to show the code which is throwing this error ;-)
Más respuestas (3)
Azzi Abdelmalek
el 12 de Ag. de 2014
Editada: Azzi Abdelmalek
el 12 de Ag. de 2014
You mean concatenation
[A;B]
Read the documentation http://www.mathworks.com/help/matlab/math/creating-and-concatenating-matrices.html#f1-85019
0 comentarios
Joakim Magnusson
el 12 de Ag. de 2014
Editada: Joakim Magnusson
el 12 de Ag. de 2014
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 comentarios
Michael Haderlein
el 12 de Ag. de 2014
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
el 12 de Ag. de 2014
Editada: Joakim Magnusson
el 12 de Ag. de 2014
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 comentarios
Matt J
el 12 de Ag. de 2014
That would not be recommendable. With B growing inside the loop, you will be doing a lot of repeated memory re-allocation.
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!