Convert vectors with different names to matrix
4 views (last 30 days)
Show older comments
Hi guys,
I have n vectors (1x4000) whose names are a1, a2 up to an. I would like to create a matrix which is the rsult of vertcat(a1,a2,...,an). How can I do it without specifying the names of all the vectors in vertcat?
Thank you!
7 Comments
Stephen23
on 2 Nov 2017
Edited: Stephen23
on 2 Nov 2017
@salvor: I asked how you are getting this data into your workspace: are you loading the data from a file, or running some function or script, or doing something else?
Data does not just magically appear in a workspace. Some operation has to put it there, like loading from a file. Please tell us how you get that data into your workspace. Then we can help you to write better code.
Accepted Answer
OCDER
on 2 Nov 2017
You could use the workaround of save/load to get what you want.
%Suppose you have these a1, a2 ... an
a1 = rand(1, 4000);
a2 = rand(1, 4000);
a3 = rand(1, 4000);
a13 = ones(1, 4000);
save('TEMPFILE.mat', '-regexp', 'a\d+') %saves variables with names a[number]
a = load('TEMPFILE.mat'); %loads into structure, a.a1, a.a2, a.a3, ...
delete('TEMPFILE.mat'); %delete temp mat file
anums = str2double(strrep(fieldnames(a), 'a', '')); %get the nth number of a
[~, sortidx] = sort(anums); %get the sort order. 1, 10, 2, 3 --> 1, 2, 3, 10
a = struct2cell(a); %convert structure to cell
a = vertcat(a{sortidx}); %sort a in right order, and then combine vertically
1 Comment
More Answers (0)
See Also
Categories
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!