基于Matlab随机过程分析_随机序列的产生

任意分布随机数的产生:1.反函数法 2.变换法
在这里插入图片描述

% 指数分布随机数的产生---反函数法
N=200;
r=rand(N,1);
l=0.1;
x=-log(r)/l;
subplot(2,1,1);
plot(x);
y=ksdensity(x);
subplot(2,1,2);
plot(y);

在这里插入图片描述
在这里插入图片描述

a=0.8;
sigma=2;
N=500;
u=randn(N,1);
x(1)=sigma*u(1)/sqrt(1-a^2);
for i=2:N
x(i)=a*x(i-1)+sigma*u(i);
end
plot(x);

在这里插入图片描述
功率谱估计:1.自相关法xcorrPw=fft(R,N)
2.周期图法periodogram()
在这里插入图片描述

eg:估计长度为100、均值为0、方差为1的高斯白噪声序列X(n) 的功率谱密度

x=randn(1, 100);
N=2^ceil(log2(length(x)));
[Pxx, frequency]=periodogram(x, [], N, 1);
figure
plot(frequency, Pxx)
xlabel('frequency(Hz)')
ylabel('PSD')

在这里插入图片描述
概率密度估计:
1.直接估计[f, xi] = ksdensity(x)
2.直方图估计hist(y,x)

%%产生一组随机序列,并画出他的直方图
x = -2.9:0.1:2.9;
y = normrnd(0,1,1000,1);
histogram(y, x);%所用matlab2019a建议使用histogram

在这里插入图片描述
eg:用“反函数法”产生1000指数分布的随机数

R=rand(1,1000);
lambda=0.5;
X=-log(1-R)/lambda; 
plot(X,'k');
xlabel('n');
ylabel('X(n)'); axis tight;

在这里插入图片描述
eg:用“反函数法”产生1000瑞利分布的随机数

R=rand(1,1000);
sigma=2;
s=sigma^2;
x=0:0.01:5
X=sigma*sqrt(-2*log(R));
plot(X,'k');
xlabel('n');
ylabel('X(n)'); 
axis tight;

在这里插入图片描述
eg:用“变换法”产生 1000 个均值为 0,方差为 1 的正态分布 的随机数

r1=rand(1,1000); 
r2=rand(1,1000);
x=sqrt(-2.*log(r1)).*cos(2*pi*r2);
plot(x);

在这里插入图片描述

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallC1oud

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值