资源简介
滤波后能做到相位不失真,解决了滤波后相位出现偏移的问题。
代码片段和文件信息
function outdata = ZeroPfilter(WpWsApAsx)
% Zero-Phase Filter base on buttor(基于巴特沃斯模拟滤波器的零相位滤波)
%-------------------------------------
% outdata = ZeroPfilter(WpWsApAsx)
% outdata: the filted signal
% [WpWsApAs]: parameter of buttor filter
% x: the origin signal
% by noWen(NNU_GIS)
% EXAMPLE:
% x = randn(4801);
% out = ZeroPfilter(0.05*pi0.1*pi115x);
% plot(x); hold all ;plot(out);
% legend(‘oridata‘‘filterdata‘);
%-------------------------------------
%-----有限冲激响应滤波器的边界处理(此处使用巴特沃斯模拟滤波器,不用正理边界)
% N = length(x);
% M = 30; %n of the filter
% xx = ones(N+M1);
% for i = 1 :N
% xx(i)=x(i);
% end
% for i = 1 : M
% xx(N+i)= 2*xx(N)-xx(N-i);
% end
% x = xx;
%--------------------------------------------------------------------------
%-------------design of buttor filter(巴特沃斯模拟滤波器设计)---------------
%判断滤波方式
if length(Wp)==2
s = ‘bandpass‘ ; %带通
else if Wp > Ws
s = ‘high‘ ; %高通
else if Wp < Ws
s = ‘low‘ ; %低通
end
end
end
Ap = Ap/2; As = As/2; %衰减速率减半(因为下面有两次滤波处理)
[NWn]=buttord(Wp/piWs/piApAs); %计算巴特沃斯滤波器阶次和截止频率
[ba]=butter(NWns); %频率变换法设计巴特沃斯带通滤波器
%--------------------------------------------------------------------------
%---------------零相位滤波实现----------------
y = filter(bax); %第一次滤波
y = fliplr(y‘)‘; %滤波结果反转
y = filter(bay); %第二次滤波
y = fliplr(y‘)‘; %再次反转,即为最终结果
%------------边界处理相关部分--------------
% for i = 1 :N
% yy(i)=y(i);
% end
% y = yy;
%----------------------------------------
outdata = y‘; %结果输出
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 112963 2009-07-23 12:27 一种新的零相移数字滤波器的改进算法.pdf
文件 1775 2009-07-24 10:55 ZeroPfilter.m
----------- --------- ---------- ----- ----
114738 2
- 上一篇:AutoCAD 2013 InvokeArx
- 下一篇:线性回归数据集
评论
共有 条评论