我正在尝试阅读一个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不属于解决方案领域。
答案 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循环示例就可以了。