How to convert a matrix to a structure array?

59 Ansichten (letzte 30 Tage)
Hannah
Hannah am 18 Jul. 2018
Kommentiert: Hannah am 19 Jul. 2018
I am working with data that is in a matrix but would like to easily convert it to a structure array. At the moment I am using the "table" and "table2struct" commands as per the simple example below but I feel that there should be a more efficient method that I'm missing as I will likely have far more than three variables and the current method I'm using seems inefficient. Any assistance would be appreciated!
M=randn(5,3);
T=table(M(:,1),M(:,2),M(:,3),'VariableNames',{'Var1' 'Var2' 'Var3'});
S=table2struct(T);
  2 Kommentare
Steven Lord
Steven Lord am 18 Jul. 2018
Why do you need to convert the matrix into a struct array? How are you planning to use the fields in the struct later in your code?
Personally most of the time I'd just leave it as M and use indexing to extract the columns as I need them.
Hannah
Hannah am 19 Jul. 2018
I normally work with the data as M as you suggest but I would like to transform the data to a struct array as it is more rigorous in terms ensuring that there is no confusion about which variable is which when making data publically accessible.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Guillaume
Guillaume am 19 Jul. 2018
I'm with Steven, it would make more sense to keep it as is, or if the columns indeed represent different things, to change it to a table. A simpler version of your conversion would be:
T = array2table(M, 'VariableNames', compose('Var%d', 1:size(M, 2)))
tables are a lot more flexible than structures as you can access data by row or by column. With a structure you're putting the emphasis on the columns at the expense of rows.
If you really want a structure, then, for a matrix with an arbitrary number of column:
S = cell2struct(num2cell(M, 1), compose('Var%d', 1:size(M, 2)), 2)

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by