1. 程式人生 > >MATLAB實現由均勻分佈產生正態分佈和銳利分佈

MATLAB實現由均勻分佈產生正態分佈和銳利分佈

xaxis=-10:0.1:10; miu=0; delta=1; N=1000000; u1=rand(1,N); u2=rand(1,N); y1=(-2*log(u1)).^0.5;    y2=(-2*log(u1)).^0.5.*sin(2*pi*u2); var1=miu+delta*y1; var2=miu+delta*y2; [sum1,loc1]=hist(var1,100); [sum2,loc2]=hist(var2,100);

subplot(2,2,1); bar(loc1,sum1*10/N);

subplot(2,2,2); bar(loc2,sum2*10/N); prob1=sum1/N; prob1=[0,prob1,0]; prob2=sum2/N; prob2=[0,prob2,0];

step1=loc1(2)-loc1(1); loc1=[loc1(1)-step1/2,loc1,loc1(end)-step1/2]; prob1=cumsum(prob1); subplot(2,2,3); plot(loc1,prob1,'g*'); legend('CDF of Rayleigh distribution');

step2=loc2(2)-loc2(1); loc2=[loc2(1)-step2/3,loc2,loc2(end)-step2/3]; prob2=cumsum(prob2); subplot(2,2,4); plot(loc2,prob2,'r*'); legend('CDF of normal distribution');