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

Arrays 存储形成循环的向量,然后计算所有这些向量的平均值,arrays,matlab,for-loop,matrix,indexing,Arrays,Matlab,For Loop,Matrix,Indexing,我有一个4乘4的矩阵: 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的第一列。所以向量b是 b=[rand(1) rand(1) rand(1) 9 ]; 我想写一个for循环,多次计算b,比如100,然后将这些向量存储在矩阵C(现在的大小为4*100)中,然后计算C所有列的平均值

我有一个4乘4的矩阵:

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的第一列。所以向量
b

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

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

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

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

for jj=1:100
C(:,jj)=[rand(1) ;...
  rand(1) ;...
  rand(1) ;...
  9 ];
end
b_average=[mean(C(1,:)); mean(C(2,:)); mean(C(3,:));mean(C(4,:))];
C=[rand(1,100);rand(1,100);rand(1,100);9*ones(1,100)];
矩阵C将包含所有列向量b。要访问它们中的任何一个,只需使用
b(:,x)
,其中
x
是您要使用的索引号或列。 对于平均值,您可以这样做:

for jj=1:100
C(:,jj)=[rand(1) ;...
  rand(1) ;...
  rand(1) ;...
  9 ];
end
b_average=[mean(C(1,:)); mean(C(2,:)); mean(C(3,:));mean(C(4,:))];
C=[rand(1,100);rand(1,100);rand(1,100);9*ones(1,100)];
当然,只有
9
值的向量的最后一个平均值没有意义:我将代码保留为完整性。 还要记住,如果
N
足够大(其中N当然是向量中的样本数),则带有随机数的向量的平均值将非常接近于零

无论如何,for循环并不是最好的方法。尝试使用类似以下内容:

for jj=1:100
C(:,jj)=[rand(1) ;...
  rand(1) ;...
  rand(1) ;...
  9 ];
end
b_average=[mean(C(1,:)); mean(C(2,:)); mean(C(3,:));mean(C(4,:))];
C=[rand(1,100);rand(1,100);rand(1,100);9*ones(1,100)];
或者更好(正如阿德里安所指出的)


这一行执行与for循环相同的操作。再次:尽量不要在Matlab中使用变量
j
i
,因为它们是保留的。

尽量在答案中使用代码,让我们知道它是否按您的要求工作,以便我们可以尝试解决其他问题,如果有,谢谢。这真的很好,这是一个完整的答案。我很高兴这一点!如果你喜欢这个答案,如果你觉得它有帮助,你也可以投赞成票!我将非常感激