我有代码来解决一些随机方程。 我的功能文件
[S,T]=simByEuler(MDL, nPeriods,'DeltaTime',params.dt);
运行正常,其中S是矩阵,其第一列是theta,第二列是phi。 S有1001行。 T是尺寸1001 * 1的时间向量。请忽略T. Focus on S,它有2列theta和phi, 即S = [θ,phi]。 S的尺寸为1001 * 2.
我想写一个for循环来生成500个theta样本然后取所有这500个的平均值。首先,我在问题中放入的代码有随机参数。此代码应位于for循环内,以便循环再次启动代码:
[S,T]=simByEuler(MDL, nPeriods,'DeltaTime',params.dt);
将生成随机变量并运行for循环直到结束以生成新的theta。我正在寻找的是拥有这500个theta的块(记住theta是一个列)。该块的大小应为1001 * 500。然后我想取该块中所有列的平均值,因此平均值应为1001 * 1。
我的问题是:
1)如何编写for循环以生成大小为1001 * 500的块。
2)如何取块中所有列的平均值,使平均值为1001 * 1.
我希望我的问题清楚,我真的很感激任何帮助。
答案 0 :(得分:1)
这是你要找的吗?
N = 500; % the size of a block
S = zeros(1001,2,N);
for k = 1:N
[S(:,:,k),T]=simByEuler(MDL, nPeriods,'DeltaTime',params.dt);
end
mean_theta = mean(squeeze(S(:,1,:)),2);