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循环的例子就好了。