Matlab XlsRead - 这个风格很差的代码?

时间:2012-10-21 23:18:12

标签: excel matlab

我正在尝试阅读一个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不属于解决方案领域。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用“struct”命令使用各种字段名称和值进行结构化。最困难的部分通常是以正确的顺序获取单元格输入...幸运的是,xlsread为您提供(几乎)您需要的内容。我现在假设你的excel文件看起来像:

field1  field2  field3
1   2   3

如果是这样的话,那么:

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

会工作吗?这是细胞阵列扩展的神奇之处。查看“struct”的帮助,以及“cell”的帮助。这也很好:

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

正如最后一点,Brian L在上面是正确的;一个MATLAB单线程可能看起来很酷,但它并不“保证”比相应的for循环更快。

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