Arrays 在数组中保存for循环中的数据

Arrays 在数组中保存for循环中的数据,arrays,matlab,Arrays,Matlab,我正试图计算一个数组,但我的for循环会单独生成数字,然后将最后的输出保存为向量。你能帮我吗?我的代码是: for k= 0:0.1:3 muk = [nanmean(abs(normGsf).^(k))] end 我看到的输出是 muk = 1 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 穆克= 为

我正试图计算一个数组,但我的for循环会单独生成数字,然后将最后的输出保存为向量。你能帮我吗?我的代码是:

for k= 0:0.1:3
muk = [nanmean(abs(normGsf).^(k))] 
end
我看到的输出是

muk =

 1
穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

穆克=

为什么不矢量化

k = 0:0.1:3;
muk = nanmean(abs(normGsf)).^k;

我假设
nanmean(abs(normGsf))
是一个标量,如您的示例所示。然后,结果
muk
是一个与
k
大小相同的向量,您可以这样做:

muk = [];    
for k= 0:0.1:3
muk = [muk; nanmean(abs(normGsf).^(k))] 
end
这会在每次通过循环时将新值附加到“muk”。
请注意,如果循环迭代的数量非常大,那么这不一定是一个好的实践,但是您离该限制非常远。

ind=1;对于k=0:0.1:3,muk(ind)=[nanmean(abs(normGsf)。^(k));ind=ind+1;结束
对于k=0:0.1:3,muk(k*10+1)=[nanmean(abs(normGsf)。^(k));结束
请注意,这是非常低效的,因为您正在创建一个“增长矩阵”。最好预先分配内存,然后再“填充”内存。如果要保持循环,
muk=0(31,1);对于k=0:0.1:3--muk(k)=nanmean(abs(normGsf)。^(k));--结束
。然而,路易斯的矢量化方法更好=)
0.8011
0.7616
0.7314
0.7089
0.6932
0.6836
0.6794
0.6805
0.6866
0.6976
0.7138
0.7351
0.7621
0.7950
0.8345
0.8812
0.9359
0.9996
1.0736
1.1592
1.2582
1.3724
1.5043
1.6567
1.8327
2.0362
2.2719
2.5450
k = 0:0.1:3;
muk = nanmean(abs(normGsf)).^k;
muk = [];    
for k= 0:0.1:3
muk = [muk; nanmean(abs(normGsf).^(k))] 
end