多次运行功能的平均保存输出

时间:2012-11-29 05:38:45

标签: matlab for-loop save octave output

我有一个有11个输入参数的函数。

MyFunction(40, 40, 1, 1, 1, 5, 0, 1, 0, 1500, 'MyFile');

输入参数'MyFile'在通过MyFunction时使用保存命令保存文本文件,该命令是行的第10个输入参数(例如1500)的6列。当我准备分析不同的运行时,我通常会将这些文件加载​​回MATLAB中。

我希望运行MyFunction m 次,并最终让'MyFile'衡量这些 m 运行。

m=10
for i = 1:m;
    MyFunction(40, 40, 1, 1, 1, 5, 0, 1, 0, 1500, 'MyFile');
end;

我可以使用for循环为每个迭代生成一个新的'MyFile'名称(例如MyFile1,MyFile2,...,MyFileM),类似MyFile = sprintf('MyFile%m');,然后加载所有MyFiles回到MATLAB然后取其平均值并将其保存为UltimateMyFile,但这看起来很麻烦。他们是更直接平均这些输出文件的更好方法吗?我应该将文件存储为对象,使用dlmwrite还是-append

感谢。

1 个答案:

答案 0 :(得分:1)

因为您正在尝试查找中位数,所以您需要访问所有数据。

你可以定义一个三维数组说

data = zeros(1500,6,m);

然后在for循环的每一步更新它:

data(:,:,i) = MyFunction(40, 40, 1, 1, 1, 5, 0, 1, 0, 1500);

当然,您需要重新定义函数以获得正确的输出。

但是,如果您需要在其他时间访问数据,那么最好将其写入文件并从那里读取。

如果您只对平均值感兴趣,则可以在分析每个案例时保留一个总计,然后将其除以案例数(m)。