% IIR濾波器設計

% 目的:設計一個採樣頻率為1000Hz、通帶截止頻率為50Hz、阻帶截止頻率為100Hz的低通濾波器,並要求通帶最大衰減為1dB,阻帶最小衰減為60dB。

clc;clear;close all;

% 1. 產生信號(頻率為10Hz和100Hz的正弦波疊加)

Fs=1000; % 採樣頻率1000Hz

t=0:1/Fs:1;

s10=sin(20*pi*t); % 產生10Hz正弦波

s100=sin(200*pi*t); % 產生100Hz正弦波

s=s10+s100; % 信號疊加

figure(1); % 畫圖

subplot(2,1,1);plot(s);grid;

title('原始信號');

% 2. FFT分析信號頻譜

len = 512;

y=fft(s,len);  % 對信號做len點FFT變換

f=Fs*(0:len/2 - 1)/len;

subplot(2,1,2);plot(f,abs(y(1:len/2)));grid;

title('原始信號頻譜')

xlabel('Hz');ylabel('幅值');

% 3. IIR濾波器設計

N=0; % 階數

Fp=50; % 通帶截止頻率50Hz

Fc=100; % 阻帶截止頻率100Hz

Rp=1; % 通帶波紋最大衰減為1dB

Rs=60; % 阻帶衰減為60dB

% 3.0 計算最小濾波器階數

na=sqrt(10^(0.1*Rp)-1);

ea=sqrt(10^(0.1*Rs)-1);

N=ceil(log10(ea/na)/log10(Fc/Fp));

% 3.1 巴特沃斯濾波器

Wn=Fp*2/Fs;

[Bb Ba]=butter(N,Wn,'low'); % 調用MATLAB butter函數快速設計濾波器

[BH,BW]=freqz(Bb,Ba); % 繪製頻率響應曲線

Bf=filter(Bb,Ba,s); % 進行低通濾波

By=fft(Bf,len);  % 對信號f1做len點FFT變換

figure(2); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,Bf,'red');grid;

legend('10Hz原始信號','巴特沃斯濾波器濾波後');

subplot(2,1,2);plot(f,abs(By(1:len/2)));grid;

title('巴特沃斯低通濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.2 切比雪夫I型濾波器

[C1b C1a]=cheby1(N,Rp,Wn,'low'); % 調用MATLAB cheby1函數快速設計低通濾波器

[C1H,C1W]=freqz(C1b,C1a); % 繪製頻率響應曲線

C1f=filter(C1b,C1a,s); % 進行低通濾波

C1y=fft(C1f,len);  % 對濾波後信號做len點FFT變換

figure(3); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,C1f,'red');grid;

legend('10Hz原始信號','切比雪夫I型濾波器濾波後');

subplot(2,1,2);plot(f,abs(C1y(1:len/2)));grid;

title('切比雪夫I型濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.3 切比雪夫II型濾波器

[C2b C2a]=cheby2(N,Rs,Wn,'low'); % 調用MATLAB cheby2函數快速設計低通濾波器

[C2H,C2W]=freqz(C2b,C2a); % 繪製頻率響應曲線

C2f=filter(C2b,C2a,s); % 進行低通濾波

C2y=fft(C2f,len);  % 對濾波後信號做len點FFT變換

figure(4); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,C2f,'red');grid;

legend('10Hz原始信號','切比雪夫II型濾波器濾波後');

subplot(2,1,2);plot(f,abs(C2y(1:len/2)));grid;

title('切比雪夫II型濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.4 橢圓濾波器

[Eb Ea]=ellip(N,Rp,Rs,Wn,'low'); % 調用MATLAB ellip函數快速設計低通濾波器

[EH,EW]=freqz(Eb,Ea); % 繪製頻率響應曲線

Ef=filter(Eb,Ea,s); % 進行低通濾波

Ey=fft(Ef,len);  % 對濾波後信號做len點FFT變換

figure(5); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,Ef,'red');grid;

legend('10Hz原始信號','橢圓濾波器濾波後');

subplot(2,1,2);plot(f,abs(Ey(1:len/2)));grid;

title('橢圓濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.5 yulewalk濾波器

fyule=[0 Wn Fc*2/Fs 1]; % 在此進行的是簡單設計,實際需要多次仿真取最佳值

myule=[1 1 0 0]; % 在此進行的是簡單設計,實際需要多次仿真取最佳值

[Yb Ya]=yulewalk(N,fyule,myule); % 調用MATLAB yulewalk函數快速設計低通濾波器

[YH,YW]=freqz(Yb,Ya); % 繪製頻率響應曲線

Yf=filter(Yb,Ya,s); % 進行低通濾波

Yy=fft(Yf,len);  % 對濾波後信號做len點FFT變換

figure(6); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,Yf,'red');grid;

legend('10Hz原始信號','yulewalk濾波器濾波後');

subplot(2,1,2);plot(f,abs(Yy(1:len/2)));grid;

title('yulewalk濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 4. 各個濾波器的幅頻響應對比分析

A1 = BW*Fs/(2*pi);

A2 = C1W*Fs/(2*pi);

A3 = C2W*Fs/(2*pi);

A4 = EW*Fs/(2*pi);

A5 = YW*Fs/(2*pi);

figure(7); % 畫圖

subplot(1,1,1);plot(A1,abs(BH),A2,abs(C1H),A3,abs(C2H),A4,abs(EH),A5,abs(YH));grid;

xlabel('頻率/Hz');

ylabel('頻率響應幅度');

legend('butter','cheby1','cheby2','ellip','yulewalk');

% IIR濾波器設計

% 目的:設計一個採樣頻率為1000Hz、通帶截止頻率為50Hz、阻帶截止頻率為100Hz的低通濾波器,並要求通帶最大衰減為1dB,阻帶最小衰減為60dB。

clc;clear;close all;

% 1. 產生信號(頻率為10Hz和100Hz的正弦波疊加)

Fs=1000; % 採樣頻率1000Hz

t=0:1/Fs:1;

s10=sin(20*pi*t); % 產生10Hz正弦波

s100=sin(200*pi*t); % 產生100Hz正弦波

s=s10+s100; % 信號疊加

figure(1); % 畫圖

subplot(2,1,1);plot(s);grid;

title('原始信號');

% 2. FFT分析信號頻譜

len = 512;

y=fft(s,len); % 對信號做len點FFT變換

f=Fs*(0:len/2 - 1)/len;

subplot(2,1,2);plot(f,abs(y(1:len/2)));grid;

title('原始信號頻譜')

xlabel('Hz');ylabel('幅值');

% 3. IIR濾波器設計

N=0; % 階數

Fp=50; % 通帶截止頻率50Hz

Fc=100; % 阻帶截止頻率100Hz

Rp=1; % 通帶波紋最大衰減為1dB

Rs=60; % 阻帶衰減為60dB

% 3.0 計算最小濾波器階數

na=sqrt(10^(0.1*Rp)-1);

ea=sqrt(10^(0.1*Rs)-1);

N=ceil(log10(ea/na)/log10(Fc/Fp));

% 3.1 巴特沃斯濾波器

Wn=Fp*2/Fs;

[Bb Ba]=butter(N,Wn,'low'); % 調用MATLAB butter函數快速設計濾波器

[BH,BW]=freqz(Bb,Ba); % 繪製頻率響應曲線

Bf=filter(Bb,Ba,s); % 進行低通濾波

By=fft(Bf,len); % 對信號f1做len點FFT變換

figure(2); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,Bf,'red');grid;

legend('10Hz原始信號','巴特沃斯濾波器濾波後');

subplot(2,1,2);plot(f,abs(By(1:len/2)));grid;

title('巴特沃斯低通濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.2 切比雪夫I型濾波器

[C1b C1a]=cheby1(N,Rp,Wn,'low'); % 調用MATLAB cheby1函數快速設計低通濾波器

[C1H,C1W]=freqz(C1b,C1a); % 繪製頻率響應曲線

C1f=filter(C1b,C1a,s); % 進行低通濾波

C1y=fft(C1f,len); % 對濾波後信號做len點FFT變換

figure(3); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,C1f,'red');grid;

legend('10Hz原始信號','切比雪夫I型濾波器濾波後');

subplot(2,1,2);plot(f,abs(C1y(1:len/2)));grid;

title('切比雪夫I型濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.3 切比雪夫II型濾波器

[C2b C2a]=cheby2(N,Rs,Wn,'low'); % 調用MATLAB cheby2函數快速設計低通濾波器

[C2H,C2W]=freqz(C2b,C2a); % 繪製頻率響應曲線

C2f=filter(C2b,C2a,s); % 進行低通濾波

C2y=fft(C2f,len); % 對濾波後信號做len點FFT變換

figure(4); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,C2f,'red');grid;

legend('10Hz原始信號','切比雪夫II型濾波器濾波後');

subplot(2,1,2);plot(f,abs(C2y(1:len/2)));grid;

title('切比雪夫II型濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.4 橢圓濾波器

[Eb Ea]=ellip(N,Rp,Rs,Wn,'low'); % 調用MATLAB ellip函數快速設計低通濾波器

[EH,EW]=freqz(Eb,Ea); % 繪製頻率響應曲線

Ef=filter(Eb,Ea,s); % 進行低通濾波

Ey=fft(Ef,len); % 對濾波後信號做len點FFT變換

figure(5); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,Ef,'red');grid;

legend('10Hz原始信號','橢圓濾波器濾波後');

subplot(2,1,2);plot(f,abs(Ey(1:len/2)));grid;

title('橢圓濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 3.5 yulewalk濾波器

fyule=[0 Wn Fc*2/Fs 1]; % 在此進行的是簡單設計,實際需要多次仿真取最佳值

myule=[1 1 0 0]; % 在此進行的是簡單設計,實際需要多次仿真取最佳值

[Yb Ya]=yulewalk(N,fyule,myule); % 調用MATLAB yulewalk函數快速設計低通濾波器

[YH,YW]=freqz(Yb,Ya); % 繪製頻率響應曲線

Yf=filter(Yb,Ya,s); % 進行低通濾波

Yy=fft(Yf,len); % 對濾波後信號做len點FFT變換

figure(6); % 畫圖

subplot(2,1,1);plot(t,s10,'blue',t,Yf,'red');grid;

legend('10Hz原始信號','yulewalk濾波器濾波後');

subplot(2,1,2);plot(f,abs(Yy(1:len/2)));grid;

title('yulewalk濾波後信號頻譜');

xlabel('Hz');ylabel('幅值');

% 4. 各個濾波器的幅頻響應對比分析

A1 = BW*Fs/(2*pi);

A2 = C1W*Fs/(2*pi);

A3 = C2W*Fs/(2*pi);

A4 = EW*Fs/(2*pi);

A5 = YW*Fs/(2*pi);

figure(7); % 畫圖

subplot(1,1,1);plot(A1,abs(BH),A2,abs(C1H),A3,abs(C2H),A4,abs(EH),A5,abs(YH));grid;

xlabel('頻率/Hz');

ylabel('頻率響應幅度');

legend('butter','cheby1','cheby2','ellip','yulewalk');

效果圖

轉載請註明文章來源 – http://blog.csdn.net/v_hyx ,請勿用於任何商業用途

matlab ellip,IIR濾波器設計(調用MATLAB IIR函數來實現) | 學步園相关推荐

  1. quartus ii matlab,基於Quartus II和MATLAB的FIR濾波器設計與仿真(二)

    接上文  基於Quartus II和MATLAB的FIR濾波器設計與仿真(一): 3  QuartusII 調用 IP 核生成 FIR 濾波器模塊 在 Quartus II 中, Altera 提供了 ...

  2. matlab fir工具箱,用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法

    摘  要 介紹了利用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法:程序設計法.FDATool設計法和SPTool設計法,給出了詳細的設計步驟,並將設計的濾波器應用到一個混和正弦波信號,以驗 ...

  3. matlab engevalstring,Matlab 執行engEvalString命令介紹 | 學步園

    MATLAB與VC混合編程指導書 在調用 Matlab 引擎之前,首先應在相關文件中加入一行: #include "enging.h" ,該文件包含了引擎 API 函數的說明和所需 ...

  4. matlab怎么用wavedec,Matlab中wavedec使用學習及詳解 | 學步園

    最近在使用對ECG訊號進行小波係數的提取,所以用到了wavedec這個matlab中內置函數.然後盡心學習,發現還挺高深,不是我學到的衹是一點皮毛,因爲要對一段波形進行特徵提取,所以我要看哪個小波係數 ...

  5. Css的filter常用濾波器屬性及語句大全

    濾鏡說明:   Alpha:設置透明層次.   blur:創建高速度移動效果,即模糊效果.   Chroma:製作專用顏色透明.   DropShadow:創建對象的固定影子.   FlipH:創建水 ...

  6. matlab ellip传递函数,BPSK和QPSK调制解调原理及MATLAB程序

    <BPSK和QPSK调制解调原理及MATLAB程序>由会员分享,可在线阅读,更多相关<BPSK和QPSK调制解调原理及MATLAB程序(10页珍藏版)>请在人人文库网上搜索. ...

  7. mysql計劃任務_MySQL計劃任務 | 學步園

    MySQL的功能越來越強大了,逐漸在想大型商業資料庫靠攏了,這不,5.1的版本已然支持視圖.觸發器.job等功能. 下面簡單介紹下我所使用的MySQL的job功能(也就是計劃任務,Oracle中稱jo ...

  8. matlab colorbar采用对数,matlab colorbar的使用 | 學步園

    1:請問matlab中畫多張圖如何使用同一範圍的colorbar? 例如生成了圖1,2,3 生成圖1時,使用 temp1=caxis; 將圖1的z值的取值範圍(即colorbar的取值範圍)取出. 生 ...

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

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

最新文章

  1. HTML5 Canvas 基础API和实例
  2. IOS-React-Native:unable to find utility instruments, not a developer tool or in PATH
  3. 总结:Sharepoint2010 Client Object Model -- Silverlight Client
  4. 详解git pull和git fetch的区别:
  5. ajax获取后台数据出错parsererror
  6. c++ --- 字符串中的标点符号
  7. MapReduce实现手机上网日志分析(分区)
  8. ruby 线程id_Ruby中的线程
  9. python元类_Python元类
  10. db2数据库连接数 linux_DB2 数据库 linux基本操作【转】
  11. 大数据实战:如何实时采集上亿级别数据?
  12. 声乐表演中肢体语言的功能及运用
  13. javaScript 高级04 正则表达式(边界符、字符类、量词符)
  14. 网络型 PLC可编程控制器综合实训装置
  15. 百度网盘里的html怎么用,百度网盘怎么用?
  16. hapi mysql项目实战路由初始化_hapi框架搭建记录(二):路由改造和生成接口文档...
  17. IMPERVA - WAF syslog配置及注意事项
  18. python五子棋程序教程_python实现五子棋小程序
  19. Java Scanner的hasNext()方法
  20. ftp服务器备份手机文件,ftp服务器文件自动备份

热门文章

  1. java计算个人所得税,月收入的5000元以上部分征20%,800元以上5000元之间部分需缴纳3%的税,800元以下的部分免税。
  2. uniswap v2 代码解读注释
  3. 使用log4js打印日志
  4. 编程人员必读书籍推荐-最具有影响力书籍
  5. 如何实现一个SQL解析器
  6. LOD技术——定义详解及相关知识介绍
  7. RCNN系列1:RCNN介绍
  8. 《大道至简》的幕后故事(4):“愚公移山记”军事地理篇
  9. 《微服务(一):微服务组件之服务注册中心》
  10. Android OKHTTP发起请求提示:SSLException: Unable to parse TLS packet header