excel - Matlab XlsRead - 这是风格不佳的代码吗?

标签 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 超出了解决方案的范围。

最佳答案

在这种情况下,您可以使用“struct”命令创建具有各种字段名称和值的结构。最困难的部分通常是以正确的顺序获取单元格输入......幸运的是,xlsread (几乎)为您提供所需的东西。我现在假设您的 excel 文件如下所示:

field1  field2  field3
1   2   3

If that's the case, then:

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

将工作。这就是单元阵列扩展的魔力。查看“struct”的帮助和“cell”的帮助。这也很好:

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

最后一点,Brian L 在上面是正确的; MATLAB one-liner 可能看起来很酷,但不能“保证”比相应的 for 循环更快。

鉴于阅读您的代码的人在 99% 的情况下都无法理解上面的示例,因此您的 for 循环示例就可以了。

关于excel - Matlab XlsRead - 这是风格不佳的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13003170/

相关文章:

matlab - 在matlab中使用FFT去除图像中的图案和噪声

matlab - 在 MATLAB 中创建人工数据

MATLAB - 'webread' 由于内容类型检查而变慢?

html - 使用 VBA 进行 Web 登录

excel - 获取应用程序定义或对象定义的错误

vba - 将新系列添加到图表 (VBA) 时出现应用程序定义或对象定义错误

php - 如何将 j/M/y 日期格式更改为时间戳?

r - 在R中打开带有日期和时间的excel文件

matlab - 如何在 MATLAB 中创建循环缓冲区,以便以正确的顺序进行连续测量

matlab - 在 MATLAB 中生成时间序列的面积图