Matlab XlsLire: ce code est-il de mauvais style?

J'essaie de lire une feuille de calcul Excel avec la première colonne ayant des keys et les colonnes suivantes ayant des valeurs dans une structure avec les keys comme noms de champs et les valeurs comme, bien, des valeurs. Je suis venu avec le code suivant, mais ça ne se sent pas très matlab-y – Je pense qu'il devrait y avoir une façon de le faire en O (1) fois plutôt que O (n).

[num,txt,~]=xlsread('whatever.xls','Rate'); txt=cell2mat(txt); for i = 1:size(txt) rates.(txt(i,:))=num(i,:) end 

Quelle est la manière la plus appropriée de faire cela? Je travaille à la maison, où je n'ai que Octave, donc importdata est hors du domaine des solutions.

Vous pouvez structurer avec différents noms et valeurs de champs en utilisant la command "struct" dans des cas comme celui-ci. La partie la plus difficile est généralement d'get les inputs de cellule dans le bon ordre … heureusement pour vous, xlsread vous donne (presque) ce dont vous avez besoin. Je suppose maintenant que votre file Excel ressemble à:

 field1 field2 field3
 1 2 3

Si c'est le cas, alors:

 [~,~,raw] = xlsread('C:\...\xlsx'); myStruct = struct(raw{:}); 

Marchera. C'est la magie de l'expansion des cellules. Regardez l'aide pour "struct", et l'aide pour "cell". C'est aussi bon:

http://blogs.mathworks.com/loren/2009/10/21/dealing-with-cells/

Tout comme une note finale, Brian L est juste au-dessus; un MATLAB one-liner pourrait avoir l'air cool, mais il n'est pas «garanti» d'être plus rapide que la boucle correspondante.

Et étant donné que 99% du time que la personne qui lise votre code ne pourra pas comprendre l'exemple ci-dessus, votre exemple de boucle est juste.