Matlab 从文件中高效地计算平均值

Matlab 从文件中高效地计算平均值,matlab,mean,Matlab,Mean,根据蒙特卡罗模拟,我有一系列文件,比如:file_1.mat,file_2.mat,…,file_n.mat,其中n很大。每个文件都包含一个或多个(如果有必要,最多3个)感兴趣的大型1D数组,比如var1、var2、var3 我现在和往常一样对求这些变量的平均值感兴趣。我现在的问题是,我如何以最有效的方式做到这一点?这里的关键词是效率。下面你会发现MWE是用标准的方式完成的,但是这相当耗时,因为文件很大,而且有很多 我用Matlab编程,但是用伪代码表达的想法也很受欢迎 MWE:(标准方式) 为

根据蒙特卡罗模拟,我有一系列文件,比如:file_1.mat,file_2.mat,…,file_n.mat,其中n很大。每个文件都包含一个或多个(如果有必要,最多3个)感兴趣的大型1D数组,比如var1、var2、var3

我现在和往常一样对求这些变量的平均值感兴趣。我现在的问题是,我如何以最有效的方式做到这一点?这里的关键词是效率。下面你会发现MWE是用标准的方式完成的,但是这相当耗时,因为文件很大,而且有很多

我用Matlab编程,但是用伪代码表达的想法也很受欢迎

MWE:(标准方式)


为什么分配
meanVar3=0(1,1e6)向量?循环中是否缺少正确的索引?在我看来,在每次迭代中,所有1e6在代码中的值都是相同的。我不太确定你在问什么?在每个循环中,我加载新的var1、var2和var3。我想要所有这些的总和,它最初存储在变量meanVar1、meanVar2和meanVar3中,在每个循环中更新。如果你提到我使用向量这个术语,用零(1,1e6)代替零(1e6,1),那么这就是我滥用“向量”这个术语。注意,var1是一个“向量”,其大小(var1)=[1,1e6]。这回答了你的问题吗?对不起,我不知何故丢失了你正在阅读的1D数组的信息。不幸的是,你不知道如何加快速度。
meanVar1 = zeros(1,1e6); %I do not remember the exact size, just use 1e6
meanVar2 = zeros(1,1e6);
meanVar3 = zeros(1,1e6);
for i 1=1:n
    load(strcat('file_',int2str(i)),'var1','var2','var3')
    meanVar1 = meanVar1 + var1;
    meanVar2 = meanVar2 + var2;
    meanVar3 = meanVar3 + var3;
end
meanVar1 = meanVar1/n;
meanVar2 = meanVar2/n;
meanVar3 = meanVar3/n;