我有一个有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
?
感谢。
答案 0 :(得分:1)
因为您正在尝试查找中位数,所以您需要访问所有数据。
你可以定义一个三维数组说
data = zeros(1500,6,m);
然后在for循环的每一步更新它:
data(:,:,i) = MyFunction(40, 40, 1, 1, 1, 5, 0, 1, 0, 1500);
当然,您需要重新定义函数以获得正确的输出。
但是,如果您需要在其他时间访问数据,那么最好将其写入文件并从那里读取。
如果您只对平均值感兴趣,则可以在分析每个案例时保留一个总计,然后将其除以案例数(m
)。