0

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

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

'MyFile'传递时的输入参数MyFunction使用save 命令保存一个文本文件,该文件是由行的第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

谢谢。

4

1 回答 1

1

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

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

data = zeros(1500,6,m);

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

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

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

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

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

于 2012-11-29T05:50:53.187 回答