Butterworth低通滤波器设计错误
本帖最后由 wuzhijun117420 于 2012-2-3 09:20 编辑向各位朋友请教一问题:本人在Butterworth低通滤波器设计时,采用以下语句绘出的频响中相位曲线不完整。大于60Hz,没有值。是不是说明这一设计无效。这到底是什么原因,以及如何处理。
=buttord(0.2,0.3,3,60);
=butter(ord,wn);
freqz(b,a,256,204.8); title('n=ord Butterworth Lowpass Filter')
谢谢大家!
本帖最后由 wuzhijun117420 于 2012-2-3 00:24 编辑
不瞒大家,其实我是想在matlab中设计一低通滤波器+下采样downsample降低上图信号的最大频率且同时降低分析数据量,如将最大频率从102.4降到20或25.6(如下图)。的确,decimate函数可以实现下采样且方便使用,但由于decimate下采样采用的是cheby1(Chebyshev Type I滤波器)实现下采样前的低通滤波。所以通带内波纹对原信号影响较大,会影响原来就不清晰的信号频谱峰。考虑到Butterworth滤波器通带平坦,不会对原信号通带内频谱产生影响。故而设计之。希望大家能够帮帮我,谢谢! 顺便问下,各位有没有利用fft进行数字滤波的。 %%%%%%%%算法1=fft+downsample函数%%%%%%%
%实现下采样downsample过程,识别效果好于resample函数,差于decimate函数.
% temp1=fft(thist_noiseout,m);
% temp1(,:)=0;;%注意temp1的第一个元素为直流分量.将中间高频分量滤掉.
% thist_noiseout=ifft(temp1);
% thist=downsample(thist_noiseout,4);%单纯取样,每隔4个数据取一个点.
% clear temp1 thist_noiseout
%%%%%%%%%%%%%%算法1结束%%%%%%%%%%%%%%%%
%%%%% 算法2=Butter+downsample函数 %%%%%
%采用Butterworth滤波器滤波,再下采样.
%=buttord(0.2,0.25,3,60);%%阻带最大衰减60应如何设置.
%=butter(ord,wn);
%for j=1:n,
% thist(:,j)=filtfilt(b,a,thist_noiseout(:,j));
%end
%thist=downsample(thist,4);%单纯取样,每隔4个数据取一个点.
%clear ord wn B A
%clear thist_noiseout
%%%%%%%%%%%%%%算法2结束%%%%%%%%%%%%%%%%
%%%%%%%%% 算法3=decimate函数 %%%%%%%%%%
%分析效果好于resample,可能因为resample中interp过程丢失了元数据信息.
%thist=zeros(m/4,n);
%for j=1:n,
% thist(:,j)=decimate(thist_noiseout(:,j),4);
%采样8阶Chebyshev滤波和filtfilt函数.
%end
%clear thist_noiseout
%%%%%%%%%%%%%%算法3结束%%%%%%%%%%%%%%%%
通过对比,以上三个函数滤波效果原来基本相同.cheby1滤波器通带波纹对信号通带影响原来可以忽略. 但butterworth设计时相位曲线不对好像不知是啥原因。希望高手给予解答,谢谢! 2012 年的贴子,刚看到,decimate是cheby1,通带波纹rp=1dB,可以改成0.1,直接用这个函数,省得麻烦
看不到附件啊 wuzhijun117420 发表于 2012-2-5 13:03
但butterworth设计时相位曲线不对好像不知是啥原因。希望高手给予解答,谢谢!
请问 decimate 默认采用了8阶chebyshevI型低通滤波器压缩频带,那么 低通的截止频率是多少呢?如果不知道这个截止频率我怎么知道我所关注的频率是否被滤掉呢??
页:
[1]