相 位 是 信 号 的 一 个 重 要 参 数 , 所 以 一 般 在 滤 波 中 希 望 实 现 零 相 位 偏 移 或 具 有 线性 相 位 偏 移
现 在 大 致 有 两 类 方 法 实 现 零 相 位 偏 移 : 1、将滤 波 器与一 个 全通滤 波 器级联, 用后者的 相 位 响应矫正前者
需要 附 加全通滤 波 器的 设计运算量以 及额外的 矫正算法 运算量; 2、使用两 个 完全相 同的 滤 波 器, 将通过第一 个 滤 波 器后的 信 号 反转再通过 第二个 滤 波 器, 再将第二个 滤 波 器的 输出序列反转作为整个 系统的 输出
综上我们采用第二种方 法 , 用 MATLAB 实 现 : clear clc close all %生成一个信号 Fs=1000; t=(0:1/Fs:1); y=sin(2*pi*5*t+pi/4)+sin(2*pi*50*t+pi/5)+sin(2*pi*60*t+pi/12); yy=sin(2*pi*5*t+pi/4); figure(1) subplot(211) plot(t,y),grid on title('输入信号波形') xlabel('t') ylabel('magnitude') subplot(212) plot(t,angle(y)) title('输入信号相位') xlabel('t') ylabel('angle') %设计一个低通滤波器 fp=10/500;%通带截止频率 fs=30/500;%阻带截止频率 wp=3;%通带最大衰减 ws=30;%阻带最大衰减 [n,fc]=buttord(fp,fs,wp,ws); [b,a]=butter(n,fc); figur