如何创建随机规范化数字的数组?

时间:2017-07-06 06:52:23

标签: arrays matlab

我想创建一个矩阵,矩阵的每一行在[0,1]中都有7个实数随机数,每行中的数字总和应该等于1。 这个矩阵有100行7列。我该怎么做?  首先,我创建一个包含1行和7列的数组。然后编写代码如下。我尝试正常行中的数字,但每行的总和变得超过1.我可以解决它吗?感谢您抽出宝贵时间。

a = rand(1,7);
for i=1:7
a(i) = a(i)/sum(a);
end
sum(a)

2 个答案:

答案 0 :(得分:4)

对于100 7,您可以使用bsxfun

a = rand(100,7);
a = bsxfun(@rdivide,a.',sum(a.')).';

这里是每行= 1

的总和

答案 1 :(得分:2)

问题在于,通过使用for循环,您将在每次循环迭代时更改向量的总和。您应该利用MATLAB的能力立即对整个矩阵采取行动:

a = rand(1,7);
a = a./sum(a);