%% IIR陷波器设计
% 目的:设计一个陷波器阻带在50±1.5Hz以内,采样频率为400Hz的滤波器,
% 并要求通带最大衰减为0.1dB,阻带最小衰减为60dB。
clc;
clear;close all;
wp1=48.5;wp2=51.5;
ws1=49.9;ws2=50.1;
rp=0.1; % 通带波纹最大衰减为0.1dB
rs=100; % 阻带衰减为60dB
fs=400; % 采样频率为400Hz
wp=[wp1,wp2]/(fs/2);% 通带截止频率/Hz
ws=[ws1,ws2]/(fs/2);% 阻带截止频率/Hz

%% -------------------------------滤波器设计----------------------------------%%

% 巴特沃斯滤波器
[b_N,b_wc]=buttord(wp,ws,rp,rs,‘z’);
[b_b,b_a]=butter(b_N,b_wc,‘stop’);
[b_hw,b_w]=freqz(b_b,b_a,512); % 绘制频率响应曲线

% 切比雪夫I型滤波器
[c1_N,c1_wc]=cheb1ord(wp,ws,rp,rs,‘z’);
[c1_b,c1_a]=cheby1(c1_N,rp,c1_wc,‘stop’);
[c1_hw,c1_w]=freqz(c1_b,c1_a,512);% 绘制频率响应曲线

%切比雪夫II型滤波器
[c2_N,c2_wc]=cheb2ord(wp,ws,rp,rs,‘z’);
[c2_b,c2_a]=cheby2(c2_N,rs,c2_wc,‘stop’);
[c2_hw,c2_w]=freqz(c2_b,c2_a,512);% 绘制频率响应曲线

% 椭圆滤波器
[d_N,d_wc]=ellipord(wp,ws,rp,rs,‘z’);
[d_b,d_a]=ellip(d_N,rp,rs,d_wc,‘stop’);
[d_hw,d_w]=freqz(d_b,d_a,512); % 绘制频率响应曲线

%% -------------------- 各个滤波器的幅频响应对比分析---------------------%%
A1 = b_wfs/(2pi);
A2 = c1_wfs/(2pi);
A3 = c2_wfs/(2pi);
A4 = d_wfs/(2pi);

figure; % 画图
subplot(2,1,1);
plot(A1,abs(b_hw),A2,abs(c1_hw),A3,abs(c2_hw),A4,abs(d_hw));grid;
title(‘H(ejw)’); xlabel(‘频率/Hz’); ylabel(‘频率响应幅度’);
legend(‘butter’,‘cheby1’,‘cheby2’,‘ellip’);
axis([47,53,0,1.1]);% 定义横坐标和纵坐标的范围
subplot(2,1,2);
plot(A1,20log10(abs(b_hw))/max(abs(b_hw)),A2,20log10(abs(c1_hw))/max(abs(c1_hw)),A3,20log10(abs(c2_hw))/max(abs(c2_hw)),A4,20log10(abs(d_hw))/max(abs(d_hw)));
title(‘损耗函数’); xlabel(‘频率/Hz’);ylabel(‘幅值/dB’);
legend(‘butter’,‘cheby1’,‘cheby2’,‘ellip’);
axis([47,53,-130,10]); % 定义横坐标和纵坐标的范围
grid on;

%% ---------------------------- 产生信号-----------------------------%%

M=2038400;
n=1:M-1;
T=1/fs;
xn=sin(2pi48nT)+sin(2pi48.5nT)+sin(2pi49nT)+sin(2pi50.nT)+sin(2pi51nT)+sin(2pi51.5nT)+sin(2pi52nT); % 信号叠加
%--------------------------- FFT分析信号频谱-------------------------------%
xk=fft(xn,M); % 对信号做len点FFT变换
yn_b=filter(b_b,b_a,xn); % 复合信号通过butter滤波器后的信号yn;
yn_c1=filter(c1_b,c1_a,xn); % 复合信号通过cheby1滤波器后的信号yn;
yn_c2=filter(c2_b,c2_a,xn); % 复合信号通过cheby2滤波器后的信号yn;
yn_d=filter(d_b,d_a,xn); % 复合信号通过ellip滤波器后的信号yn;
k=2*(0:M-1)/M;

yk_b=fft(yn_b,M); % 对信号做M点FFT变换
yk_c1=fft(yn_c1,M); % 对信号做M点FFT变换
yk_c2=fft(yn_c2,M); % 对信号做M点FFT变换
yk_d=fft(yn_d,M);

yk_b_T=Tfft(yn_b,M); % 对信号做M点FFT变换
yk_c1_T=T
fft(yn_c1,M); % 对信号做M点FFT变换
yk_c2_T=Tfft(yn_c2,M); % 对信号做M点FFT变换
yk_d_T=T
fft(yn_d,M); % 对信号做M点FFT变换

%% -------------------------------波形显示----------------------------------%%
% 原信号
figure(2); % 画图
subplot(2,1,1);
plot(n,xn,‘blue’);
title(‘原信号波形图’); xlabel(‘f/Hz’);ylabel(‘幅度’);
axis([0,4000,-8,8]); % 定义横坐标和纵坐标的范围
grid on;
subplot(2,1,2);
plot(kfs/2,abs(xk),‘blue’); % k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=k*fs/2
title(‘滤波前输入信号x(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);%
axis([40,60,0,6000]);
% axis([40,60,0,max(abs(xk))]);% 定义横坐标和纵坐标的范围
grid on;

% 巴特沃斯滤波器
figure; % 画图
subplot(3,1,1);
plot(n,yn_b,‘r’);
title(‘butter滤波后波形图’); xlabel(‘f/Hz’);ylabel(‘幅度’);
axis([0,4000,-8,8]); % 定义横坐标和纵坐标的范围
grid on;
subplot(3,1,2);
plot(kfs/2,abs(yk_b),‘b’); % k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘fft变换’);
title(‘butter滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
axis([40,60,0,6000]);
%axis([40,60,0,max(abs(yk_b))]); % 定义横坐标和纵坐标的范围
grid on;
subplot(3,1,3);
plot(k
fs/2,abs(yk_b_T),‘r’); % k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘T*fft变换’);
title(‘butter滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
axis([40,60,0,6000]);
% axis([40,60,0,max(abs(yk_b_T))]); % 定义横坐标和纵坐标的范围
grid on;

% 切比雪夫I型滤波器
figure; % 画图
subplot(3,1,1);
plot(n,yn_c1,‘m’);
title(‘cheby1滤波后波形图’); xlabel(‘f/Hz’);ylabel(‘幅度’);
axis([0,4000,-8,8]); % 定义横坐标和纵坐标的范围
grid on;
subplot(3,1,2);
plot(kfs/2,abs(yk_c1),‘m’); % k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘fft变换’);
title(‘cheby1滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
axis([40,60,0,6000]);
% axis([40,60,0,max(abs(yk_c1))]);% 定义横坐标和纵坐标的范围
grid on;
subplot(3,1,3);
plot(k
fs/2,abs(yk_c1_T),‘m’); % k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘T*fft变换’);
title(‘cheby1滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
axis([40,60,0,6000]);
% axis([40,60,0,max(abs(yk_c1_T))]);% 定义横坐标和纵坐标的范围
grid on;

% 切比雪夫II型滤波器
figure; % 画图
subplot(3,1,1);
plot(n,yn_c2,‘g’);
title(‘cheby2滤波后波形图’); xlabel(‘f/Hz’);ylabel(‘幅度’);
axis([0,4000,-8,8]); % 定义横坐标和纵坐标的范围
grid on;
subplot(3,1,2);
plot(kfs/2,abs(yk_c2),‘g’);% k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘fft变换’);
title(‘cheby2滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
% axis([40,60,0,6000]);
% axis([40,60,0,max(abs(yk_c2))]);%定义横坐标和纵坐标的范围
grid on;
subplot(3,1,3);
plot(k
fs/2,abs(yk_c2_T),‘g’);%画离散图 k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘T*fft变换’);
title(‘cheby2滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
% axis([40,60,0,6000]);
% axis([40,60,0,max(abs(yk_c2_T))]);% 定义横坐标和纵坐标的范围
grid on;

% 3.4 椭圆滤波器
figure; % 画图
subplot(3,1,1);
plot(n,yn_d);
title(‘ellip滤波后波形图’); xlabel(‘f/Hz’);ylabel(‘幅度’);
axis([0,4000,-8,8]); % 定义横坐标和纵坐标的范围
grid on;
subplot(3,1,2);
plot(kfs/2,abs(yk_d));% k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘fft变换’);
title(‘ellip滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
axis([40,60,0,6000]);
% axis([40,60,0,max(abs(yk_d))]);% 定义横坐标和纵坐标的范围
grid on;
subplot(3,1,3);
plot(k
fs/2,abs(yk_d_T));% k=w/pi,w=mo_wT=mo_w/fs,mo_w=2pif;得到f=kfs/2
legend(‘T*fft变换’);
title(‘ellip滤波后输出信号y(n)频谱特性’); xlabel(‘f/Hz’);ylabel(‘H(ejw)’);
axis([40,60,0,6000]);
% axis([40,60,0,max(abs(yk_d_T))]);% 定义横坐标和纵坐标的范围
grid on;

IIR数字滤波器设计50Hz陷波器(MATLAB代码)相关推荐

  1. iir陷波滤波器 matlab,IIR数字滤波器设计50Hz陷波器(MATLAB代码)

    %% IIR陷波器设计 % 目的:设计一个陷波器阻带在50±1.5Hz以内,采样频率为400Hz的滤波器, % 并要求通带最大衰减为0.1dB,阻带最小衰减为60dB. clc; clear;clos ...

  2. 利用频率采取法设计50HZ陷波器(matlab代码)

    %% FIR陷波器设计 %% -----------------------频率采取法Frequency adoption Method--------------------%% % 目的:设计一个 ...

  3. matlab 陷波器,50Hz陷波器(Matlab程序)

    clf;clear; %设置初值 f0=50; Ts=0.001; fs=1/Ts; NLen=512; n=0:NLen-1; %陷波器的设计 apha=-2*cos(2*pi*f0*Ts); be ...

  4. 50hz 60hz 级联 陷波器,心电信号50Hz陷波器的FPGA实现

    收稿日期: 2009 - 03 - 23 心电信号 50 Hz 陷波器的 FPGA 实现 林 霖 , 张志德 (南方医科大学 生物医学工程学院 , 广东广州 510515) [中图分类号]TH772 ...

  5. 有源滤波器: 基于UAF42的50Hz陷波器仿真

    上一小节,我们设计出一个基于UAF42的50Hz陷波器.在本 小节,我们将使用免费的仿真软件TINA对这个电路进行仿真分析.具体原理图如下所示. 其中3.1831M欧的电阻用两个E96标准的电阻串联组 ...

  6. 50HZ陷波器python源码

    #50HZ陷波器 #分子 numerator =[0.96897, -1.84310, 0.96897 ] #分母 denominator =[1, -1.84310 ,0.93795] import ...

  7. MATLAB设计指定频率的陷波器

    下面来介绍一下如何在MATLAB中编程实现陷波器,具体如下: 1.首先在MATLAB的主界面编辑器中写入下列代码: clf;clear; %设置初值 f0=70; %频率为70HZ Ts=0.001; ...

  8. matlab陷波器函数,利用窗函数设计陷波器(matlab代码)

    %% FIR陷波器设计 %% =窗函数设计法window function Method========%% % 目的:设计一个陷波器阻带在50±1.5Hz以内,采样频率为400Hz的滤波器, % 并 ...

  9. 陷波器介绍_50Hz工频信号陷波器设计

    文章目录 学习目标: 基本概念: 基本原理: 参数的具体计算及选择: 具体计算 # 陷波器的意义 学习目标: 了解陷波器的基本概念 掌握50HZ工频陷波器的基本电路图 基本概念: 提示:这里可以添加要 ...

最新文章

  1. 砥砺前行:我的2016总结和2017计划 | 掘金技术征文
  2. 2017年10月21日普及组 简单单词
  3. SUM and REPLACE
  4. C# Cookie操作类
  5. oracle单行子查询返回多个行 order by,单行子查询返回多个行 Issue分析求助
  6. SpringBoot-动力节点-王鹤
  7. 3.Python data types
  8. CH340以及CH系列USB转串口驱动下载
  9. cmpp java代码_CMPP2.0JAVA调用
  10. 死党教会我的编程”记忆大法“,安排!不看可别后悔
  11. 【创业者活动】运营弱关系型社区以及创业者交流聚会[2012年12月]
  12. 国标28181:实时视频播放
  13. Pair:医学图像标注神器
  14. IP-guard功能详解——屏幕监控
  15. 怎么投稿各大媒体网站?有哪些媒体网站?
  16. Kubernetes控制器和service
  17. 青蛙与蚊子——C++练习题
  18. 微信小程序中自定义组件
  19. 真实!八大最辛苦的公务员岗位
  20. 简易 SolidWorks的三维飞行器模型建立教程

热门文章

  1. 无需审核的29个交换链接平台
  2. [学习笔记]天线相位中心改正
  3. 科技创新催生新动能,“云游戏+”打通数字经济任督二脉
  4. 【链路追踪】skywalking部署流程
  5. 泛物云计算机,「博纳云」博纳云(BonusCloud):全球泛载雾计算平台
  6. 头条面试官:5 亿整数的大文件,如何排序 ?
  7. 计算机应用在我们生活中的哪些方面,计算机应用领域论文
  8. java外文翻译范文_电子商务毕业论文外文翻译范文《JavaandtheInternet》
  9. android p通话录音功能,Android编程实现通话录音功能的方法
  10. 诚之和:盗本、洗稿…剧本杀火热背后的版权之痛盗版正版同天发售