for循环遍历矩阵的第一列并表示

时间:2016-10-07 10:04:23

标签: matlab

我有代码来解决一些随机方程。 我的功能文件

[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.

我希望我的问题清楚,我真的很感激任何帮助。

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);