存储形成for循环的向量,然后计算所有这些向量的平均值

时间:2016-10-08 12:47:31

标签: arrays matlab for-loop matrix indexing

我有一个4乘4的矩阵:

A

现在我想形成一个向量b作为矩阵b的第一列。所以向量b=[rand(1) rand(1) rand(1) 9 ];

C

我想编写一个for循环,计算b多次说100然后将这些向量存储在矩阵C(现在大小为4 * 100)中,然后计算{{的所有列的平均值1}}。到目前为止我写道:

for j=1:100
   A=[rand(1) 2 -1 rand(1);...
      rand(1) 3 rand(1) 0;...
      rand(1) -5 -2 5;...
      9 0 0 rand(1)];
   b=A(:,1)
end

每次执行循环时,它都会生成一个向量,比如b_1然后b_2,....,b_100。如何将它们存储在矩阵C=[b_1 b_2 ... b_100]中,然后在所有列上计算矩阵C的平均值,以便平均值为4 x 1的矢量,其大小与b相同。

1 个答案:

答案 0 :(得分:1)

我没有在这台笔记本电脑上使用Matlab,但小脚本应该是这样的:

for jj=1:100
C(:,jj)=[rand(1) ;...
  rand(1) ;...
  rand(1) ;...
  9 ];
end

矩阵C将包含所有列向量b。要访问其中任何一个,只需使用b(:,x),其中x是您要使用的索引号或列。 对于平均值,您可以执行以下操作:

b_average=[mean(C(1,:)); mean(C(2,:)); mean(C(3,:));mean(C(4,:))];

当然,仅具有9值的向量的最后一个含义并不意味着:我保留代码,因为它只是为了完整性。 还要记住,如果N足够大(其中N是向量中样本的数量),具有随机数的向量的平均值将非常接近零值。

无论如何,for循环不是最好的方法。尝试使用这样的东西:

C=[rand(1,100);rand(1,100);rand(1,100);9*ones(1,100)];

或更好(正如Adriaan所指出的那样)

C=[rand(3,100);9*ones(1,100)];

这一行与for循环相同。再次:尝试不要在Matlab中使用变量ji,因为它们是保留的。