之前我们已经能用MATLAB产生频谱均匀的白噪声了。但是在特定的场合,我们需要用一定带宽的噪声来褒机。这里就需要请出滤波器设计工具了。
产生白噪声的过程以前已经有描述,这里不再解释:
wav =randn(1e6,2);
然后进行滤波器设计,这里设计了一个低通FIR滤波器:
f =[0 0.4 0.5 1]; a = [1 1 0 0];
LPF = firpm(100,f,a);
LPF则是设计得到的滤波器。默认情况下firpm设计出来的滤波器通带,阻带等纹波。100为滤波器阶数。由于不是拿去设计实际的实现,所以阶数可以取高点来满足滤波特性。然后我们可以看到滤波器的频谱:
freqz(LPF);
然后利用滤波器对白噪声进行滤波:
wav2 = filter(LPF,1,wav);
然后通过FFT察看滤波后的噪声谱:
最后保存文件:
wavwrite(wav2,44100,'noise_shaped');
打完收工,如果你的播放工具带频谱显示,那就可以看到频谱就是那么回事。。。
文章评论(0条评论)
登录后参与讨论