Matlab生成随机数求助!如何生成基于某一模型的随机数组(急求)
RT,我希望生成一个随机数组,满足这样的关系:
y=a+bx+ε(x),ε(x)~N(0,(d0+dx)^2)
其中,x我定义为x=(1:1:5),a=5,b=2,d0=1,d=2,怎样生成满足上述模型的矩阵Y(i,j)?
另外,我有这样一个例子,也是生成随机矩阵,他的模型是y=7+15x,方差为0.1+10*x+0.3*x^2,但是他的代码是这样的:
x=(1:1:5);
for i=1:10
Y(i,1)=7+normrnd(0,sqrt(5));
for j=2:length(x)
Y(i,j)=Y(i,j-1)+normrnd(24*1.5,sqrt(1.5*10+0.5*(x(j)*x(j)-x(j-1)^2)));
end
end
由于我刚学matlab,这段代码恕我能力有限,实在是看不懂,请高手帮忙讲解!谢谢
就假设我要生成的y也是10个吧
Matlab生成随机数求助!如何生成基于某一模型的随机数组(急求)
答案:1 悬赏:60 手机版
解决时间 2021-05-03 17:15
- 提问者网友:风月客
- 2021-05-02 21:02
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-05-02 22:15
你给的例子中,代码和条件对应不起来.
满足你需要的代码如下:
a=5;b=2;d0=1;d=2; % 常数定义
N=10; % 要生成的随机数个数
x = 1:1:5;
for j=1:length(x)
sigma = d0 + d * x(j); % 随机数方差
ex = normrnd(0, sigma, N, 1); % 随机数
Y(:,j)= a + b * x(j) + ex;
end
disp(Y) % 显示结果
如有问题可继续追问,
再问: 我help了一下normrnd函数,第一个参数说是参数的均值,这里写0应该是没错,第二个是标准差,我看你定义的标准差是d0+d*x,这里不写sigma^2的原因是相当于开方了是吗?还有后面两个参数,这里您写N,1,意思是生成了N*1矩阵吗? 还有例子模型ex=d0+d1x+d2x^2,三个参数分别为0.1,10,0.3,但是代码里却完全找不到对应参数,是由于代码和条件不对应?
再答: 你的理解没错: 1、不写sigma^2的原因是相当于开方; 2、normrnd函数后面两个参数写N,1,意思是生成了N*1矩阵; 3、我的理解是代码和条件不对应,因为有关的参数根本对不上号,即使是可行的代码(这种可能性极小),也是一种非常糟糕的实现方式,没必要仔细去读了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯