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]

 채택된 답변

BobH
BobH 2020년 3월 17일
편집: BobH 2020년 3월 17일
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

Sorry, I meant horizontally. I edited the question to be consistent.

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

추가 답변 (1개)

Sriram Tadavarty
Sriram Tadavarty 2020년 3월 17일
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

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

릴리스

R2019b

질문:

2020년 3월 17일

댓글:

2025년 9월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by