Concatenating vectors based on list of variable names

4 visualizaciones (últimos 30 días)
Jerki Jokne
Jerki Jokne el 17 de Mzo. de 2020
Comentada: Jerki Jokne el 17 de Mzo. de 2020
I have 5 column vectors in my workspace with the same length, and a cell array with their names in the order that I would like to horizontally concatenate them in. In this example I use 5 vectors, but there can be more.
a1 = rand(5,1);
a10 = rand(5,1);
a11 = rand(5,1);
a2 = rand(5,1);
a3 = rand(5,1);
order = {'a1', 'a2', 'a3', 'a10', 'a11'};
How can I horizontally concatenate the variables in this order, such that I have the following result?
[a1, a2, a3, a10, a11]

Respuesta aceptada

BobH
BobH el 17 de Mzo. de 2020
Editada: BobH el 17 de Mzo. de 2020
c = cellfun(@eval, order, 'un', 0);
r = vertcat( c{:} );
% horzcat if that's what you wanted, and all variables in order are same size
vertical concatenation looks like this (semicolons not commas)
[a1; a2; a3; a10; a11]
  1 comentario
Jerki Jokne
Jerki Jokne el 17 de Mzo. de 2020
Sorry, I meant horizontally. I edited the question to be consistent.

Iniciar sesión para comentar.

Más respuestas (1)

Sriram Tadavarty
Sriram Tadavarty el 17 de Mzo. de 2020
Hi Jerki,
This can be done with a for loop as shown below:
out =[]
for i = 1:numel(order)
out = [out eval(order{i})];
end
Hope this helps.
Regards,
Sriram

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by