我想创建一个矩阵,矩阵的每一行在[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)
答案 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);