白噪声MATLAB

1、白噪声频谱
白噪声(white noise)是指功率谱密度在整个频域内是常数的噪声。 所有频率具有相同能量密度的随机噪声称为白噪声。

2、均匀白噪声、高斯白噪声、瑞利白噪声
均匀白噪声是幅度统计规律服从均匀分布而功率谱为常数的噪声

高斯白噪声是幅度统计规律服从高斯分布而功率谱为常数的噪声

瑞利白噪声是幅度统计规律服从瑞利分布而功率谱为常数的噪声

3、信噪比
信噪比是指信号最大幅值和噪声的最大幅值的比,用信号最大幅值除以噪声最大幅值所得结果即是。
MATLAB编程效果
时域分析

频域分析

代码说明
1、采样频率48000,时长2秒左右,噪声生成96255个点
2、将噪声加到信号上时,若信噪比方式,给噪声乘以一定比例系数和信号相加使max(信号幅度):max(噪声幅度)=snr

fs=48000;
figure(1)
       gnoes=normrnd(0,1,1,96255);
       subplot(311);plot(gnoes,'m')
       axis([0 96255 -6 6]);xlabel('高斯分布杂波');
       ray=raylrnd(2,1,96255);
       subplot(312);plot(ray,'c')
       axis([0 96255 0 16]); xlabel('瑞利分布杂波')
       unif=rand(1,96255);     
       subplot(313);plot(unif,'g')
       axis([0 96255 0 2]); xlabel('均匀分布杂波');
figure(2)
       NFFT=2^nextpow2(length(gnoes));
       b_1=fft(gnoes,NFFT)/length(gnoes);
       f=fs/2*linspace(0,1,NFFT/2+1);
       subplot(311);plot(f,abs(b_1(1:NFFT/2+1)));
       axis([0 length(f)/2 0 0.03]);xlabel('高斯分布杂波频谱');
       b_2=fft(ray,NFFT)/length(ray);
       subplot(312);plot(f,abs(b_2(1:NFFT/2+1)));
       axis([0 length(f)/2  0 0.04]);xlabel('瑞利分布杂波频谱')     
       b_3=fft(unif,NFFT)/length(unif);
       subplot(313);plot(f,abs(b_3(1:NFFT/2+1)));
       axis([0 length(f)/2  0 0.01]);xlabel('均匀分布杂波频谱');
MATLAB中产生带限白噪声可以通过使用randn函数结合巴特沃斯滤波器实现。 首先,我们需要使用randn函数生成一段高斯白噪声信号。可以使用以下代码生成指定长度N的高斯白噪声序列: ```matlab N = 1000; % 设置噪声序列的长度 noise = randn(N, 1); % 生成高斯白噪声序列 ``` 接下来,我们需要设置带限频率范围,并使用巴特沃斯滤波器对噪声信号进行滤波。假设我们希望将白噪声限制在0到500 Hz的频率范围内,可以使用以下代码: ```matlab Fc = 500; % 设置带限频率上限 Fs = 1000; % 设置采样率 order = 4; % 设置滤波器阶数 % 设计带限巴特沃斯滤波器 [b, a] = butter(order, Fc / (Fs / 2)); % 应用滤波器 filtered_noise = filter(b, a, noise); ``` 在以上代码中,我们使用butter函数设计一个四阶的巴特沃斯滤波器,然后通过filter函数将噪声信号传入滤波器,得到带限白噪声信号。 最后,我们可以绘制原始白噪声信号和带限白噪声信号的频谱图,以便观察噪声在限制频率范围后的变化: ```matlab % 对原始白噪声信号进行频谱分析 Y_noise = fft(noise); P_noise = abs(Y_noise / N); f_noise = (0:(N-1)) * (Fs / N); % 对带限白噪声信号进行频谱分析 Y_filtered = fft(filtered_noise); P_filtered = abs(Y_filtered / N); f_filtered = (0:(N-1)) * (Fs / N); % 绘制频谱图 figure; subplot(2,1,1); plot(f_noise, P_noise); xlabel('Frequency (Hz)'); ylabel('Amplitude'); title('Spectrum of White Noise'); subplot(2,1,2); plot(f_filtered, P_filtered); xlabel('Frequency (Hz)'); ylabel('Amplitude'); title('Spectrum of Band-Limited White Noise'); ``` 通过运行以上代码,我们可以观察到原始白噪声信号和带限白噪声信号的频谱差异。 以上就是在MATLAB中产生带限白噪声的方法,希望对你有所帮助!
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值