|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我最近在做滤波问题,就是对一段语音信号进行滤波,出现了一些我觉得意料之外的问题,请大家帮忙看看。
程序步骤如下:
1.读取一段N点数据,对音乐信号做FFT得信号频谱yf。
2.采用MATLAB中设计滤波器的函数fir1,如下:
ln=fir1(N_lfilter-1,omiga_lc/pi,'low',hamming(N_lfilter));产生滤波器ln,并作FFT得到f_ln。
3.f_low=yf.*f_ln'; 低频信号频谱
y_low=ifft(f_low); 反变换后得低频信号
出来的结果不太满意,不论是低通还是高通后的信号,它们最后几十个样点出现了很大程度的振荡即肩峰,与原始信号不吻合,见附件不知大家有没有遇到过类似的情况。以我的认识和了解,我产生了三个疑问,请大家指点:
1.产生振荡的原因可能是设计的滤波器过于突变,在全部主瓣在通带内时卷积出现了最大值,即很明显的肩峰。这个肩峰怎么缓减?
2.滤波相当于一个响应,即应该是N点数据和L点滤波器响应的卷积,如此那么应该是有N+L-1个样点,而最后得到的是N个样点的数据,我想可能是N点圆周卷积后的结果,小于线性卷积点数,如果是这样的话不是会出现混叠了吗?
3.FIR滤波器有固定相移,那么在滤波后的信号也是存在相移的,如何解决相移问题呢?
以前学数字信号处理也只停留在课本上,没有深入研究过,有过钻研的XDJM说说你们的看法吧,呵呵,不胜感激。:@) |
|