我有一个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
相同。
答案 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中使用变量j
和i
,因为它们是保留的。