Matlab XlsRead – 这是风格糟糕的代码?

我正在尝试读取一个Excel电子表格,第一列有键,而后面的列有值,并将键值作为字段名和值作为值。 我想出了下面的代码,但它只是感觉不到matlab -y – 我觉得应该有一种方法来做O(1)时间而不是O(n)。

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

什么是更合适的方式去做这个? 我在家里工作,只有Octave,所以Importdata不在解决scheme领域。

在这种情况下,可以使用“struct”命令来构造各种字段名称和值。 最难的部分通常是以正确的顺序获得单元格input…幸运的是,xlsread给你(几乎)你所需要的。 我现在假设你的excel文件如下所示:

 field1 field2 field3
 1 2 3

如果是这样的话,那么:

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

将工作。 这是单元arrays扩展的魔力。 看看“结构”的帮助和“细胞”的帮助。 这也很好:

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

就像最后一点,Brian L在上面是正确的。 一个MATLAB单线程可能看起来很酷,但不能“保证”比相应的for-loop更快。

考虑到99%的时间阅读你的代码的人将无法理解上面的例子,你的for循环的例子就好了。