加载数据不同集合的参数文件

问题描述:

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

我尝试的第一件事是将它们保存在数据目录中的脚本文件parameters.m中,并使用run([path_to_data,'/parameters.m'])加载它们。不过,我明白这不是一种好的编码习惯,它也给我提出了一些范围问题(我认为),因为parameters.m中的更改并不总是反映在我的工作区变量中。 (工作空间变量Clear all之后才改变并重新运行代码。)

一个干净的解决方案是定义在每个数据目录的功能parameters(),但话又说回来,我需要的目录添加到搜索路径。另外我担心如果我不给函数赋予唯一名称,我可能会遇到命名空间冲突。另一方面,使用独特的名称不太实际...

有没有更好的解决方案?

+0

参数集和数据集之间的关系是1:1,1:M,M:N,M:1? – 2012-08-14 10:03:57

+0

@HighPerformanceMark如果我正确地理解了它,它就是1:1,即对于每组数据,都有一组固定的参数。我分析了一些物理实验中的数据,这些数据是在几次运行中完成的,其中参数随着每次运行而改变。 – sebhofer 2012-08-14 10:09:31

所以定义一个structcell array称为parameters并将其存储在它所属的我不知道你的参数是什么样的数据目录,但我们可能是这样的:

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工具读取,编写和调查参数以及数据。我不认为需要一个比这更复杂的解决方案(尽管你的参数本身可能会变得复杂)。

+0

看来我没有清楚地说明问题:我有几个充满数据的目录(每个都用于实验运行)。数据主要是二进制格式(10s到100s MB)的时间追踪。对于每个目录,我需要存储一组不同的参数。所以在我的代码中,我想1)选择一个目录,2)读取参数,3)读取数据,4)使用参数来分析数据。事情是,我想将参数存储在数据目录中并从那里读取它们。 – sebhofer 2012-08-14 10:26:04

+0

我想你是对的,我想的太复杂了。谢谢 – sebhofer 2012-08-14 14:44:55