使用Matlab产生白噪声的简单方法 |
您所在的位置:网站首页 › 十拿九稳拼音怎么写 › 使用Matlab产生白噪声的简单方法 |
白噪声的 psd 在整个频率范围内显示出相同的值。由于功率谱密度下面的总面积,即噪声具有的总功率是无线的,所以白噪声是不存在的。但实际上对于任何一种噪声谱,如果所关心的频带内是平坦的,通常都被称为白噪声谱。高斯白噪声 顾名思义,高斯白噪声指的是产生白噪声的幅值服从的是均值为0的正态分布。 在Simulink中产生高斯白噪声①Band-limited White Noise\sigma^{2}=\frac{Noisepower}{Sample time} . 其中 \sigma^{2} 指产生高斯白噪声的方差(功率),故Band-limited White Noise产生的是均值为0,方差为\sigma^{2}的信号。 【个人理解 欢迎指正】均值为0,故方差可代表信号幅值的平方,由此想到信号的能量。根据帕塞瓦尔定理和功率谱密度的表达式: \sum_{n=1}^{N} \left| x_i(n)\right| ^{2}= \frac{1}{N}\sum_{n=1}^{N} \left| F_i(k)\right| ^{2}. psd_{i}=\frac{\left| F_{i}(k) \right|^{2}}{Nf_{smp}} , 1\leq n\leq N . \left| F_{i} \right|^{2}=psd_{i}Nf_{smp} . 白噪声在频率范围内表现为一个常数,如果产生噪声信号的幅值为 \sigma ,则信号的能量可表示为: \sum_{n=1}^{N} \left| x_i(n)\right| ^{2}=N\sigma^{2}=\frac{1}{N}\sum_{1}^{N}{\left| F_{i} \right|^{2}}=psdNf_{smp} . 由此可以推出方差与 psd 和采样时间的关系。 也可以由方差代表信号的功率想到,功率谱密度对频率的积分等于总功率直接得到 \sigma^{2}=psdf_{smp} . 【例】设功率谱密度为1e-31,采样频率为250kHz,可算得信号的平均能量(平均强度、功率)为2.512385728845274e-26。 原理与前一种相同,只不过Random number是直接通过设置方差控制噪声能量的,使用Random number产生白噪声时,均值一定要设置为0。 其原理与Band-limited White Noise相同,依然可以通过如下公式来估计功率谱密度 \sigma^{2}=\frac{psd}{Sample time} . 【例】分别用Band-limited White Noise和 Random Number产生方差为2.5e-26的白噪声,采样频率都为250kHz,采样点数都为2048。 a+b*randn(1,c):产生均值为 a ,方差为 b^{2} 的 c 个白噪声采样点。 【例】产生均值为0,方差为0.01的2048个采样点,系统带宽为125000,计算高斯白噪声的功率谱密度和总能量。 clc;clear; BW = 125e3; %带宽 N = 2^11; %采样点数 noise=1e-1*randn(1,2048)'; %产生噪声 tsmp = 4e-6; fsmp = 1/tsmp; %采样周期 fB = N*(BW/fsmp); %带宽所占采样点数 fB=ceil(fB); %向下取整 noise_psd=(abs(fft((noise(1:N))'))).^2/(N*fsmp); %功率谱密度 energy_t=sum((abs((noise(1:N)))).^2); %总能量 plot([1:fB]*fsmp/N,noise(1:fB),'r'); grid on; xlabel('Frequency [Hz]') ylabel('功率谱密度 [W/Hz]') text_handle = text(100000,0.35, sprintf('总能量为 = %4.3fJ',energy_t));wgn(a,b,c):产生一个a行,b列,方差为cdB的高斯白噪声。即 \sigma^{2}=10^{\frac{c}{10}} . 【例】产生均值为0,方差为0.01的2048个点的高斯白噪声,计算其能量和功率谱密度。 clc;clear; BW = 125e3; %带宽 N = 2^11; %采样点数 noise=wgn(1,2048,10*log10(0.01)); %产生噪声 var(noise) tsmp = 4e-6; fsmp = 1/tsmp; %采样周期 fB = N*(BW/fsmp); %带宽所占采样点数 fB=ceil(fB); %向下取整 noise_psd=(abs(fft((noise(1:N))'))).^2/(N*fsmp); %功率谱密度 energy_t=sum((abs((noise(1:N)))).^2); %总能量 plot([1:fB]*fsmp/N,noise(1:fB),'r'); grid on; xlabel('Frequency [Hz]') ylabel('功率谱密度 [W/Hz]') text_handle = text(90000,0.3, sprintf('总能量为 = %4.3fJ',energy_t));awgn(signal,snr):表示在信号signal中产生了使信噪比为snr的噪声。 【例】添加噪声使信噪比为60dB。 clc;clear; N = 2^11; %采样点数 psd=1e-10; %所要求白噪声噪声的功率谱密度 tsmp = 1e-6; fsmp = 1/tsmp; %采样周期 fin=2e4; %输入信号频率 n=(1:N); %采样点数为N个 f=fin/fsmp; signal=sin(2*pi*f*n); %输入信号 signal_noise=awgn(signal,60); %信号+噪声 noise=signal_noise-signal; %噪声 signal_noise_power=sum((abs(fft(signal_noise((1:N))'))).^2)/N^2;%信号+噪声的总功率 noise_power=sum(abs(fft((noise(1:N))')).^2)/N^2; %噪声功率 snr=10*log10(signal_noise_power/noise_power); %信噪比 plot([1:N]*fsmp/N,noise(1:N),'r'); grid on; xlabel('Frequency [Hz]') ylabel('噪声功率谱密度 [W/Hz]') text_handle = text(800000,0.0035, sprintf('snr= %4.3fdB',snr));具体用法及其他参数说明可见wgn及awgn参数说明. 均匀分布的白噪声均匀分布的白噪声其幅值分布是均匀的。 rand():产生的是均值为0.5,方差为 \frac{1}{12} 的幅值在幅度在0~1之间的随机数。已知白噪声的均值为0,白噪声的强度也要根据需要发生变化,解决的方法是: 减去产生的随机数序列的平均值;调节幅度来调节方差。【例】产生功率谱密度为1e-10W/Hz,采样频率为1Mhz,均值为0的均匀白噪声。 clc;clear; BW = 125e3; %带宽 N = 2^11; %采样点数 psd=1e-10; %所要求白噪声噪声的功率谱密度 tsmp = 1e-6; fsmp = 1/tsmp; %采样周期 c=psd*fsmp; %所要求白噪声的方差 k=sqrt(c/(1/12)); %比例系数 fB = N*(BW/fsmp); %带宽所占采样点数 noise=rand(1,2048); %产生噪声 noise=k*(noise-mean(noise)); %使均值为0,修正方差 va=var(noise); %方差 fB=ceil(fB); %向下取整 noise_psd=(abs(fft((noise(1:N))'))).^2/(N*fsmp); %功率谱密度 noise_psd_mean=sum(noise_psd)/N; energy_t=sum((abs((noise(1:N)))).^2); %总能量 plot([1:fB]*fsmp/N,noise(1:fB),'r'); grid on; xlabel('Frequency [Hz]') ylabel('功率谱密度 [W/Hz]') text_handle = text(100000,0.018, sprintf('总能量为 = %4.3fJ',energy_t));运算所得功率谱密度与设定的功率谱密度相符。 在RF模块中使用的噪声模块。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |