MATLAB Answers


Matrix Maipulation and adding from variables in the workspace

Asked by arun Dhillon on 9 May 2019
Latest activity Commented on by arun Dhillon on 13 May 2019
I am saving a file(penmax), which has n no. of variables. In each variable, the size is always 1*5 (1 row, 5 cols.); the names of variables are liuke pick1, pick2,pick3...but the the no of variables inside the penmax file changes each time i run the script.
What I want to do is, to save all the variables inside of the penmax file into an m*5 matrix(newmatrix). I cannot use [] to concatenate each variable with the other one as I am not sure for how many variables penmax may have in total; but I am sure for each of the variables will have 1 row and 5 cols. Please edify me for how can I put all the variables of penmax into an n*5 matrix(newmatrix).
The file format is penmax.mat


Show 1 older comment
The file format is .mat. Essentially lets say, you simply variabes in the workspace from a1,a2,...aN. All the variabes have size 1*5. how can I put all variables a1...aN inside of a newmatrix which will have its first row as a1, 2nd row as a2 and so on.
"Essentially lets say, you simply variabes in the workspace from a1,a2,...aN. "
I would never have numbered variables like that in my workspace, so that question is moot.
Having numbered variables is a sign that code is very badly designed. Usually what happens with numbered variables is that beginners try to access them dynamically by name. Dynamically accessing variable names is one way that beginners force themselves into writing slow, complex, obfuscated, buggy code that is hard to debug. Read this to know why:
Avoiding such badly design code is very easy, usually using one array and some indexing is all that is required. Indexing is simple, neat, easy to debug, and very efficient (unlike what you are trying to do).
I doubt that you sat and wrote all of those variable names out by hand, so wherever you imported/generated those arrays, instead simply allocate them into one (preallocated) array (which could be numeric, cell, structure, table, etc.):
You are right,
The code is not designed very well, and I am trying to rectify the structure; but thanks a lot for your advise.

Sign in to comment.

1 Answer

Answer by Stephen Cobeldick on 10 May 2019

Load the file into a variable (which is a structure) and access its fieldnames:
S = load(...)


Sign in to comment.