How to create a matrix of numbers from workspace variables?

5 views (last 30 days)
I have 70 double variables of size 1500x1(let's call them a1,a2....a70) loaded in workspace. I would like to create a matrix M which contains these variables as columns, so that the matrix size will be 1500x70. Is there an efficient way to do this?
  1 Comment
Aniket Vagha
Aniket Vagha on 24 Feb 2016
Edited: Aniket Vagha on 24 Feb 2016
I used this:
params = who('a*'); % Vars I need start with a.
Matrix = zeros(1500, 70); % 1500 and 70 obtained from array sizes.
for ii = 1:length(Params)
Matrix(:,ii) = eval(Params{ii})
end
Is there a more direct way by-passing eval?

Sign in to comment.

Answers (1)

Stephen23
Stephen23 on 24 Feb 2016
Yes there is an efficient way to do this: don't create 70 numbered variables in your workspace.
How did you "create" them?
If it was by load, then simply call load with an output argument:
S = load(...)
If you created your 70 variables some other way then let us know and we can show you a much better way of programming.
Read my answer to know why accessing 70 variables in a loop is slow, buggy, and obfuscated way to program:

Community Treasure Hunt

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

Start Hunting!