资源描述
指定功率的白噪声的产生方案
11
2020年4月19日
文档仅供参考,不当之处,请联系改正。
随机信号课程设计
杜华贵 起 超 刘 越
胡 谦 徐 涛 李盼辉
一、题目:
设计指定功率为20的白噪声产生方案并实现。
分析:白噪声过程是服从一定分布的随机过程,它的特点是功率谱密度为常数。平稳白噪声过程均值为零,自相关函数在t =0处为一个冲击,功率谱函数在整个频率范围内是常数。因为其均值为零,因此方差在数值上等于功率。实际上,白噪声都是理想模型,在模拟系统中不可能存在,因此我们利用混合同余法生成随机数的方法产生一个无限近似的白噪声。为了分析简单方便,易于理解,利用混合同余法产生一个服从X~U[-3,3]的白噪声。其均值为0,方差和功率为1。
二、原理:
产生随机数的方法是先用一定的方法产生[0,1]均匀分布的随机数,然后经过一个适当的变换就能够得到符合某一概率模型的随机数。常见的产生[0,1]均匀分布的随机数的方法有乘同余法和混合同余法。
运用混合同余法产生在[-3,3]均匀分布的随机数,经过调整种子数、乘子和随机数序列的长度,能够优化使其分布更加接近X~U[-3,3]。并经过MATLAB编程实现其随机分布,计算并绘制出自相关函数,功率谱密度,概率密度曲线的图像。
●混合同余法介绍:
经过同余运算生成伪随机数的方法称为同余法,常见的同余法包括加同余法、乘同余法、混合同余法、除同余法。其中乘同余法和混合同余法的性能更好,有速度快、内存省、周期长、统计特性好等优点。混合同余法是Lehmer在1951年提出的,其迭代公式为:
(0.1)
(0.2)
公式、中,mod表示求余函数,均为正整数。其中是模数,是乘子,是增量,为初始值,即种子数,当时,称此算法为乘同余法;若,则称算法为混合同余法,当取不为零的适当数值时,有一些优点,但优点并不突出,故常取。是在内服从均匀分布的随机变量,则是在内服从均匀分布的随机变量。式中的取值并不是随意的,模大小是发生器周期长短的主要标志,常见有为素数,取为的原根,则周期。试验统计表明,用以下参数进行混合同余法产生的随机序列的统计特性较好:
(1.3)
混合同余法产生的随机序列具有以下特点:
Ø 重复周期较小,由于取值在内,其周期,受的值的影响,在编程实现时,浮点运算也会对产生影响
Ø 用此方法产生的随机序列,在一个周期内任意两个随机数不可能相等,这往往与实际情况不相符
经Hull和Dobell证明,只有满足以下一些关系才能实现周期最大化,即,条件如下:
Ø 与互质(或互素,即它们的最大公约数为1)
Ø 设为某一质数,分别能被和4整除,且能被和4整除
产生具有最大周期的伪随机序列的混合同余法算法为:
(1.4)
(1.5)
由于时,只有一个素数因子2,且4也是的因子,此时,正好满足了的第二个条件;而此时刚好与互质,即满足的第一个条件。
三、验证方案:
根据白噪声定义和特性:其均值为0,功率谱密度为常数,方差等于功率,其自相关函数在0处为一个冲击,因此我们需要验证其均值、功率谱密度和自相关函数即可验证其分布。
四、流程图:
图1
五、源程序:
a=input('请输入所要指定的功率a=:')
%混合同余法产生(-3^0.5到3^0.5的均匀分布
n=7340; %随机数长度
x=zeros(1,n); %分配存储空间
x(1)=224; %设定种子数
y=zeros(1,n-1);
for i=2:n %循环产生[0,1]均匀分布的随机数
x(i)=mod(2045*x(i-1)+1,2^20);
y(i-1)=x(i)/2^20;
end
y=y*(2*3^0.5)-3^0.5; %对[0,1]均匀分布变换,使其均值为零,方差为1
%经过变换生成功率为a的白噪声
X=a^(1/2)*y;%功率为a的白噪声(因为均值为0)
%时域特性曲线%
figure(1)
plot(X);
title('时域特性曲线');xlabel('时间(t)');ylabel('幅度A');
%概率密度函数%
figure(2)
[k1,n1]=ksdensity(X);
plot(n1,k1);
title('概率密度函数');xlabel('X');ylabel('幅度');
%自相关函数%
figure(3)
[r1,lags]=xcorr(X);
plot(lags,r1);
title('自相关函数特性曲线');xlabel('时间(t)');ylabel('Rx(t)');
%功率谱密度%
f1=fft(X,7340);
p1=mean(f1.*conj(f1))/7340
figure(4);
plot(1:7340,abs(p1),'bo','MarkerSize',3');
title('功率谱函数');xlabel('频率Hz');ylabel('幅度Sx(f)');
m1=mean(X)%求变换后序列的均值
D1=var(X)%求变换后序列的方差
figure(5);%验证白噪声
hist(X);title('白噪声频率统计图');%生成的白噪声的频率统计图
%求其实际产生的功率
P=m1*m1+D1
六、实验结果:
输入指定功率a=20时的实验结果如下:
%时域特性曲线%
figure(1)
plot(X);
title('时域特性曲线');xlabel('时间(t)');ylabel('幅度A');
图2
%概率密度函数%
figure(2)
[k1,n1]=ksdensity(X);
plot(n1,k1);
title('概率密度函数');xlabel('X');ylabel('幅度');
图3
%自相关函数%
figure(3)
[r1,lags]=xcorr(X);
plot(lags,r1);
title('自相关函数特性曲线');xlabel('时间(t)');ylabel('Rx(t)');
图4
%功率谱密度%
f1=fft(X,7340);
p1=mean(f1.*conj(f1))/7340
figure(4);
plot(1:7340,abs(p1),'bo','MarkerSize',3');
title('功率谱函数');xlabel('频率Hz');ylabel('幅度Sx(f)');
图5
figure(5);%验证白噪声
hist(X);title('白噪声频率统计图');%生成的白噪声的频率统计图
图6
运行结果如下:
图7
六、结果分析:
利用混合同余法产生了X~U[-3,3]分布,其概率密度曲线近似为X~U[-3,3]分布的曲线,均值、方差为常数。自相关函数在t=0处有一个冲击,功率谱密度为常数。
对该均值为零,方差为1(即功率)的均匀分布进行标准化与反标准化变换,能够实现产生任意指定功率的白噪声。由以上实验结果知,指定功率a=20时,产生的白噪声的时域分布为图2、概率密度曲线为图3、自相关函数图像为图4、功率谱密度函数图像为图5。由图7的实验结果可知,经过此种方法产生的白噪声功率为P=20.0948,误差较小,达到实验设计目的。
七、课程设计心得体会:
经过本次课程设计,对白噪声的定义和统计特性有了更加深刻的认识,学习掌握了随机数产生方法——混合同余法,在使用matlab进行统计验证的过程中,让我们更加熟练的掌握了matlab的操作,将理论学习与实际操作联系起来,很大程度上提升了我们的能力。
展开阅读全文