基于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);

基于Matlab随机过程分析_随机序列的产生_第1张图片
基于Matlab随机过程分析_随机序列的产生_第2张图片

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);

基于Matlab随机过程分析_随机序列的产生_第3张图片
功率谱估计:1.自相关法xcorrPw=fft(R,N)
2.周期图法periodogram()
基于Matlab随机过程分析_随机序列的产生_第4张图片

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')

基于Matlab随机过程分析_随机序列的产生_第5张图片
概率密度估计:
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

基于Matlab随机过程分析_随机序列的产生_第6张图片
eg:用“反函数法”产生1000指数分布的随机数

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

基于Matlab随机过程分析_随机序列的产生_第7张图片
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;

基于Matlab随机过程分析_随机序列的产生_第8张图片
eg:用“变换法”产生 1000 个均值为 0,方差为 1 的正态分布 的随机数

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

基于Matlab随机过程分析_随机序列的产生_第9张图片

你可能感兴趣的:(随机信号分析与处理,matlab)