# How to convert a matrix to a structure array?

112 vues (au cours des 30 derniers jours)
Hannah le 18 Juil 2018
Commenté : Hannah le 19 Juil 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 commentairesAfficher AucuneMasquer Aucune
Steven Lord le 18 Juil 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 le 19 Juil 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.

Connectez-vous pour commenter.

### Réponse acceptée

Guillaume le 19 Juil 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)
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Hannah le 19 Juil 2018
Thanks Guillame. I'll give a table a go.

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Structures dans Help Center et File Exchange

R2017b

### Community Treasure Hunt

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

Start Hunting!

Translated by