有没有数字信号处理的matlab懂哥help一下?

请问为什么这样设计后带通滤波器图像左右不对称?有看出问题在哪的吗?我的这个程序也是找的别人的。

img

[x1,fs]=audioread('D:\录音.m4a'); %读取语音信号,赋给变量x1
x=x1(80001:1:160000); %截取原始信号80000个采样点
Noise=(0.02)randn(1,80000); %随机函数产生噪声并对噪声进行衰减
x2=x+Noise; %加入衰减后的噪声
sound(x2 ,fs); %播放加入衰减噪声后的语音,可以明显听出嘶嘶的噪声
fs=44100;wp0=2
pi1100/fs;wp1=2pi200/fs;wp2=2pi2000/fs;ws1=2pi150/fs;ws2=2pi2050/fs;Ap=10;As=50;T=2;%数字带通滤波器技术指标
Fs=1/T;
wc1=(2/T)tan(wp1/2);wc2=(2/T)tan(wp2/2);%通带截止频率
wr1=(2/T)tan(ws1/2);wr2=(2/T)tan(ws2/2);%阻带截止频率w0=(2/T)tan(wp0/2);%频率预畸变
B=wc2-wc1;%带通滤波器通带宽度
normwr1=(((wr1^2)-(w0^2))/(B
wr1));normwr2=(((wr2^2)-(w0^2))/(B
wr2));normwc1=(((wc1^2)-(w0^2))/(B
wc1));normwc2=(((wc2^2)-(w0^2))/(B
wc2));%带通到低通的频率变换
if abs(normwr1)>abs(normwr2)normwr=abs(normwr2)else normwr=abs(normwr1)end
normwc=abs(normwc1);%将指标转换成归一化模拟低通滤波器的指标
N=buttord(normwc,normwr,Ap,As,'s');%设计归一化模拟低通滤波器阶数N与3dB截止频率
[bLP,aLP]=butter(N,normwc,'s');%计算相应的模拟滤波器系统函数G(p)
[bBP,aBP]=lp2bp(bLP,aLP,w0,B);%将G(p)变换为模拟带通滤波器H(s)
[b,a]=bilinear(bBP,aBP,Fs);
w=linspace(0,pi,500);
h=freqz(b,a,w);
subplot(2,1,2);plot(w
fs/(2
pi),abs(h));grid onxlabel('频率/Hz')ylabel('|H(jw)|')title('IIR带通滤波器')

问题没看明白,带通滤波器的频谱图像左右不对称?是这个意思么?
频率有没有负的,为什么左右对称?你是不是看的FFT变换的左右对称?

那你搞个平滑化处理