给两协差矩阵都角线矩阵意味着两二维变量各维间相关于高斯程相互独立直接利用randn函数数据角线值各自差
第组数据(假设a第维b第二维)带团:
a=sqrt(5)*randn([50,1])
b=sqrt(0.2)*randn([50,1])
第铅行侍二组数据类似产
PS.由于产50点所利用仿真点算协差矩阵能跟条件定差异比我算协差矩阵[4.5825,0.09620.0962,0.1952]值随着点数增变更加稳定且趋向于条件值比槐吵我10000点候[4.8099,0.00050.0005,0.2058]协差矩阵
M=10%产生M行N列的随机数矩阵N=8
miu1=1%第一个分布的参数
sigma1=2%第一个分布的参数
miu2=6%第二个分布的参数
sigma2=1%第二个分布的参数
R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N)
单点的概率全是0,那你取出来的随机数算什么?
若干个随机数要满足统计分布,是要按区间统计的
另外我不知道你要做什么就是了。
你如果想按一定的概率密度来产生随机数,你最好用反函数法之类的来弄。
比如产生一个x.^2分布的随机数,不过这些要归一化。
============================================
首先,我知道我的是错的了。如下图就可知
M=1000%产生M行N列的随机数矩阵
N=1
miu1=1%第一个分布的参数
sigma1=2%第一个分布的参数
miu2=6%第二个分布的参数
sigma2=1%第二个分布的参数
R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N)
x=-5:0.001:15
y1=normpdf(x,miu1,sigma1)
y2=normpdf(x,miu2,sigma2)
subplot(2,2,1)
plot(x,y1)
subplot(2,2,2)
plot(x,y2)
subplot(2,2,3)
y3=0.2*y1+0.8*y2
plot(x,y3)
subplot(2,2,4)
dx=0.5
xx=-5:dx:15
yy=hist(R,xx)
yy=yy/M/dx
plot(x,y3)
hold on
bar(xx,yy)
=======================================
正确做法,我还没弄出来,继续中。。。。
============================================
_____________________新的旁困尝试
下面的结果我觉得可能可以接受。
思路:基于反变换法
Matlab下面有
p=normpdf(x,miu,sigma)是求出x处的概率密度。
p=normcdf(x,miu,sigma)是求运此念出X<x的累积概率密度(就是从负无穷大到x处的概率密度的积分)
我给定一个区间,这个区间外的概率我认为是0(这一点不够严谨,理论上应当是从负无穷到正无穷)
我这里取的是-10:15,其间我取了25000个点,求出这些点的累积概率值(两个的加权和y3),记这个为F(x),根据反变换法,
F(x)=u,其中u是一个0到1的均匀随机数。只要求出扒数它的解x0,那么x0就满足所给定的概率密度分布。这里我用的是插值。用
(y3,x)来插值出u所在的位置
声明,这里有一些地方不够严谨,严谨应当用解析的方法来做反变换。
%%%%%下面是程序
M=1000%产生M行N列的随机数矩阵
N=1
miu1=1%第一个分布的参数
sigma1=2%第一个分布的参数
miu2=6%第二个分布的参数
sigma2=1%第二个分布的参数
x=-10:0.001:15
y1=normpdf(x,miu1,sigma1)
y2=normpdf(x,miu2,sigma2)
y3=0.2*y1+0.8*y2
y1=normcdf(x,miu1,sigma1)
y2=normcdf(x,miu2,sigma2)
y=0.2*y1+0.8*y2
u=rand(N,M)
R=interp1(y,x,u,'linear')
dx=0.5
xx=-10:dx:15
yy=hist(R,xx)
yy=yy/M/dx
bar(xx,yy)
hold on
plot(x,y3,'r*')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)