【问题标题】:loading parameter files for data different sets加载不同数据集的参数文件
【发布时间】:2012-08-10 14:30:20
【问题描述】:

我需要分析与不同参数集相关联的几组数据(每组数据有一组参数)。我目前正在努力寻找一种存储这些参数的好方法,以便在分析特定数据集时随时可用。

我尝试的第一件事是将它们保存在数据目录中的脚本文件parameters.m 中,然后使用run([path_to_data,'/parameters.m']) 加载它们。然而,我知道这不是好的编码实践,而且它也给我带来了范围界定问题(我认为),因为 parameters.m 的变化并不总是反映在我的工作区变量中。 (工作区变量仅在Clear all 并重新运行代码后更改。)

一个干净的解决方案是在每个数据目录中定义一个函数parameters(),但是我需要再次将目录添加到搜索路径中。另外我担心如果我不给函数提供唯一的名称,我可能会遇到命名空间冲突。另一方面,使用唯一名称不是很实用...

有没有更好的解决方案?

【问题讨论】:

  • 参数集和数据集的关系是1:1, 1:M, M:N, M:1 吗?
  • @HighPerformanceMark 如果我理解正确,它是 1:1,即对于每组数据,都有一组固定的参数。我分析了一个物理实验的数据,该实验分多次运行,每次运行时参数都会发生变化。

标签: matlab


【解决方案1】:

所以定义一个名为parametersstructcell array 并将其存储在它所属的数据目录中。我不知道你的参数是什么样的,但我们的可能看起来像这样:

parameters.relative_tolerance = 10e-6
parameters.absolute_tolerance = 10e-6
parameters.solver_type = 3
.
.
.

我会写

save('parameter_file', 'parameters')

甚至

save('parameter_file', '-struct', 'parameters', *fieldnames*)

在线帮助揭示了如何使用 -struct 将结构中的字段存储为对您有用的单个变量。

一旦您保存了参数,您就可以使用load 命令加载它们。

总结一下:在它所引用的实验的数据目录中创建一个名为parameterssave 的变量(很可能是一个结构或单元数组)。然后,您将拥有所有常用的 Matlab 工具,用于读取、写入和调查参数以及数据。我认为不需要比这更复杂的解决方案(尽管您的参数本身可能很复杂)。

【讨论】:

  • 看来我没有把问题说清楚:我有几个目录充满了数据(每个目录都用于实验运行)。数据主要是二进制格式的时间轨迹(10s 到 100s MB)。对于每个目录,我需要存储一组不同的参数。所以在我的代码中我想1)选择一个目录,2)读取参数,3)读取数据,4)使用参数来分析数据。问题是,我想将参数存储在数据目录中并从那里读取它们。
  • 我猜你是对的,我想得太复杂了。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 2014-03-18
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
相关资源
最近更新 更多