How to convert a matrix to a structure array?
112 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
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.
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)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Structures dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!