运用normrnd函数。
1 R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,SIGMA参数代表标准差)的随机数。输入的向量或矩阵MU和SIGMA必须形式相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。
2 R=normrnd(MU,SIGMA,m,n): 生成m×n形式的正态分布的随机数矩阵。
实例:生成均值为0,标准差为1的22正态分布随机矩阵。
拓展说明:
matlab中还有个函数randn,可以产生均值为0,方差σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵。
Y = randn(n)返回一个nn的随机项的矩阵;
Y = randn(m,n) 或 Y = randn([m n]):返回一个mn的随机项矩阵。
close all;
clear all;
data = xlsread('工作簿数据xlsx','sheet2','g2:g106556'); %读入数据
%测试数据 data = lognrnd(8,7,10000,1);
[y x]=hist(data,200); %统计频次分布
h=bar(x,y,1); %画直方图
hold on;
%对数正态分布密度函数
fun=@(p,x) p(1)/xexp(-((log(x)-p(2))/p(3))^2/2);
%A=p(1),mu=p(2),sigma=p(3)
[maxy ind]=max(y);
%做非线性数据拟合
p=nlinfit(x,y,fun,[maxyx(ind),log(x(ind)),1]);
%画拟合曲线
x1 = min(x):001:max(x);
yfit=fun(p,x1);
plot(x1,yfit,'r','linewidth',1);
%极大似然处 x=exp(mu-sigma^2);
xmax=exp(p(2)-p(3)^2);
ymax=fun(p,xmax);
plot([xmax xmax],[0 ymax],'g','linewidth',2);
%期望值处 x=exp(mu+sigma^2/2)
xmean=exp(p(2)+p(3)^2/2);
ymean=fun(p,xmean);
plot([xmean xmean],[0 ymean],'c','linewidth',2);
xlim([min(x) max(x)]);
xlabel('BC浓度(ng/m^3)');
ylabel('频数');
legend('统计数据',['对数正态分布:\mu=' num2str(p(2)) ',\sigma=' num2str(p(3))],
['极大概然分布位置:x=' num2str(xmax)],['期望值位置:x=' num2str(xmean)]);
text(xmean+10000,ymean+10,'$ y=\frac{A}{x}e^{-\frac{(lnx-\mu)^2}{2\sigma^2}} $',
'interpreter','latex','FontSize',18);
>> pd=makedist('Normal');
>> x = -4:001:4;
>> y=cdf(pd,x);
>> plot(x,y)
程序:
clear
x=-4:001:4;
miu=0;sigma=1;
y1=normpdf(x,miu,sigma);
y2=normcdf(x,miu,sigma);
%前者是密度,后者是分布
y3=normrnd(miu,sigma,1,length(x));
%高斯白噪声
z1=x+4;
z2=sort(y3);
y4=normcdf(z2,miu,sigma);
figure(1)
subplot 221
plot(x,y1)
title('正态分布的概率密度')
subplot 222
plot(x,y2)
title('正态分布的累积分布')
subplot 223
plot(z1,y3)
title('高斯白噪声')
subplot 224
plot(z2,y4)
title('高斯白噪声的累积分布')
syms a t
fun=exp(-t^2/2)/sqrt(2pi);
F=int(fun,t,-inf,t);
t=000:001:349;
eval(F)
呵呵你不会是我同学吧??我也学数模的,几天前搞的,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)