用给定的mus和sigma创建一个带normrnd的循环

时间:2015-09-28 02:22:27

标签: matlab for-loop random

这可以被视为一个简单的问题,但到目前为止我无法弄清楚。我希望在正态分布后使用给定的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

我已经逐个尝试了代码并生成了随机数,也对它进行了舍入并消除了负数,但是当我设置循环时,调用给定的数字会有麻烦

1 个答案:

答案 0 :(得分:0)

需要考虑的一些事项:

  • 您目前使用m作为您的平均值和R矩阵第一维的长度。 - &GT;我已将您的资源重命名为mu
  • newR的大小很可能在后续迭代中不同,因为您将删除R <0的不同数量的条目。这是sim(:,i) = newR不喜欢的。 - &GT;我已将sim设为一个单元格。
  • newR 是二维的,当消除R <0的值时会引起问题,因为不清楚最终矩阵的形状是什么。 - &GT;我将此限制为向量
  • 的情况
  • 我不明白你是如何消除负面价值的 - &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