这可以被视为一个简单的问题,但到目前为止我无法弄清楚。我希望在正态分布后使用给定的mus和sigma生成随机数,然后围绕这些数字并消除负数。最后将创建的矢量存储在一个名为sim的矩阵中。给定的mus和sigmas是下一个:
m1=22.06;
s1=16.06;
m2=23.84;
s2=72.39;
m3=3.79;
s3=3.4;
m4=148.306;
s4=125.81;
m5=36.82;
s5=15.64;
到目前为止,我有下一个代码:
for i = 1: 5
R(i) = normrnd(m(i),s(i),[m,n]);%generate random number ND
R(i) = round(R(i));
[badrows,c]=find(R(i)<0);%find negatives ones
newR(i) = R(setdiff(1:size(R(i),1),badrows),:);%eliminate them
sim(:;i)= newR(i);
end
我已经逐个尝试了代码并生成了随机数,也对它进行了舍入并消除了负数,但是当我设置循环时,调用给定的数字会有麻烦
答案 0 :(得分:0)
需要考虑的一些事项:
m
作为您的平均值和R矩阵第一维的长度。 - &GT;我已将您的资源重命名为mu
newR
的大小很可能在后续迭代中不同,因为您将删除R <0的不同数量的条目。这是sim(:,i) = newR
不喜欢的。 - &GT;我已将sim
设为一个单元格。我不明白你是如何消除负面价值的 - &gt;我使用了更简单的方法。
mu = [22.06, 23.84, 3.79, 148.306, 36.82];
s = [16.06,72.39,3.4,125.81,15.64];
m = 20;
for i = 1: 5
R = normrnd(mu(i),s(i),[1,m]);
R = round(R);
R(R<0) = [];
sim{i}= num2cell(R);
end