【转】【MATLAB】模拟和数字低通滤波器的MATLAB实现
原文地址:http://blog.sina.com.cn/s/blog_79ecf6980100vcrf.html
低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As=30dB,其他滤波器可以通过与低通之间的映射关系实现。
%%模拟滤波器
%巴特沃斯——滤波器设计
wp=2*pi*2500;ws=2*pi*3500;Rp=1;As=30;
[N,wc]=buttord(wp,ws,Rp,As,'s')%计算率波器的阶数和3dB截止频率
[B,A]=butter(N,wc,'s');%计算滤波器系统函数分子分母多项式
fk=0:800/512:8000;wk=2*pi*fk;
Hk=freqs(B,A,wk);
figure
plot(fk/1000,20*log10(abs(Hk)));
grid on,xlabel('频率(kHz)'),ylabel('幅度(dB)')
title('巴特沃斯模拟滤波器')
axis([0,4,-35,5])
%%
%切比雪夫I——滤波器设计
wp=2*pi*2500;ws=2*pi*3500;Rp=1;As=30;
[N1,wp1]=cheb1ord(wp,ws,Rp,As,'s')%计算切比雪夫滤波器的阶数和通带边界频率
[B1,A1]=cheby1(N1,Rp,wp1,'s');%计算滤波器系统函数分子分母多项式
fk=0:800/512:8000;wk=2*pi*fk;
Hk=freqs(B1,A1,wk);figure,
plot(fk/1000,20*log10(abs(Hk)));
grid on,xlabel('频率(kHz)'),ylabel('幅度(dB)')
title('切比雪夫I模拟滤波器')
axis([0,4,-35,5])
%%
%切比雪夫II——滤波器设计
wp=2*pi*2500;ws=2*pi*3500;Rp=1;As=30;
[N2,wso]=cheb2ord(wp,ws,Rp,As,'s')%计算切比雪夫滤波器的阶数和通带边界频率
[B2,A2]=cheby2(N1,Rp,wso,'s');%计算滤波器系统函数分子分母多项式
fk=0:800/512:8000;wk=2*pi*fk;
Hk=freqs(B1,A1,wk);figure,
plot(fk/1000,20*log10(abs(Hk)));
grid on,xlabel('频率(kHz)'),ylabel('幅度(dB)')
title('切比雪夫II模拟滤波器')
axis([0,4,-35,5])
%%
%椭圆——滤波器设计
wp=2*pi*2500;ws=2*pi*3500;Rp=1;As=30;
[N,wpo]=ellipord(wp,ws,Rp,As,'s')%计算滤波器的阶数和通带边界频率
[B,A]=ellip(N,Rp,As,wpo,'s');%计算滤波器系统函数分子分母多项式
fk=0:800/512:8000;wk=2*pi*fk;
Hk=freqs(B1,A1,wk);figure,
plot(fk/1000,20*log10(abs(Hk)));
grid on,xlabel('频率(kHz)'),ylabel('幅度(dB)')
axis([0,4,-35,5]),title('椭圆模拟滤波器')
%%
%数字滤波器
%脉冲响应法滤波器设计
fp=2500;fs=3500;Fs=8000;
wp=2*fp/Fs;ws=2*fs/Fs;%求归一化数字通带截止频率,求归一化数字阻带起始频率
deltaw=ws-wp;%求过渡带宽
N0=ceil(6.6/deltaw);%求窗口长度
N=N0+mod(N0+1,2); %确保窗口长度 N为奇数
n=N-1;%求出滤波器的阶数 n
wn=(ws+wp)/2; %求滤波器的截止频率
b=fir1(n,wn)%利用 fir1 函数求出滤波器的系数
[Hk,w] = freqz(b,1); % 计算频率响应
mag = abs(Hk); % 求幅频特性
db = 20*log10(mag/max(mag)); % 化为分贝值
dw =pi/512; %关于pi归一化
Rp = -(min(db(1:wp*pi/dw+1))) % 检验通带波动
As = -(max(db(ws*pi/dw+1:512))) % 检验最小阻带衰减
figure,plot(0:pi/511:pi,db),grid on
axis([0,4.0,-80,5]),title('数字滤波器——脉冲响应法')
%%
%fir1窗函数法
fp=2500;fs=3500;Fs=8000;rs=30;
wp=2*fp*pi/Fs;ws=2*fs*pi/Fs;%求归一化数字通带截止频率,求归一化数字阻带起始频率
Bt=ws-wp;%求过渡带宽
alpha=0.5842*(rs-21)^0.4+0.07886*(rs-21);%计算kaiser窗的控制参数
M=ceil((rs-8)/2.285/Bt);%求出滤波器的阶数
wc=(ws+wp)/2/pi; %求滤波器的截止频率并关于pi归一化
hk=fir1(M,wc,kaiser(M+1,alpha))%利用 fir1 函数求出滤波器的系数
[Hk,w] = freqz(hk,1); % 计算频率响应
mag = abs(Hk); % 求幅频特性
db = 20*log10(mag/max(mag)); % 化为分贝值
db1=db';
figure,plot(0:pi/511:pi,db1),grid on
axis([0,4.0,-80,5]),title('数字滤波器——fir1窗函数法')
%%
%频率采样法
fp=2500;fs=3500;Fs=8000;rs=30;
wp=2*fp*pi/Fs;ws=2*fs*pi/Fs;%求归一化数字通带截止频率,求归一化数字阻带起始频率
Bt=ws-wp;%求过渡带宽
m=1;alpha=0.5842*(rs-21)^0.4+0.07886*(rs-21);%计算kaiser窗的控制参数
N=ceil(m+1)*2*pi/Bt;%求出滤波器的阶数
N=N+mod(N+1,2);
Np=fix(wp/(2*pi/N));
Ns=N-2*Np-1;
Hk=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)];
wc=(ws+wp)/2/pi; %求滤波器的截止频率并关于pi归一化
hk=fir1(M,wc,kaiser(M+1,alpha))%利用 fir1 函数求出滤波器的系数
[Hk,w] = freqz(hk,1); % 计算频率响应
mag = abs(Hk); % 求幅频特性
db = 20*log10(mag/max(mag)); % 化为分贝值
db1=db';
figure,plot(0:pi/511:pi,db1),grid on
axis([0,4.0,-80,5]),title('数字滤波器——频率采样法')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%利用等波纹最佳逼近法设计FIR数字滤波器
Fs=8000;f=[2500,3500];m=[1,0];
rp=1;rs=30;
delta1=(10^(rp/20)-1)/(10^(rp/20)+1);delta2=10^(-rs/20);
rip=[delta1,delta2];
[M,fo,mo,w]=remezord(f,m,rip,Fs);%边界频率为模拟频率时必须加入采样频率
M=M+1;%估算的M直达不到要求,家1后满足要求
hn=remez(M,fo,mo,w);
[Hk,w] = freqz(hn,1); % 计算频率响应
mag = abs(Hk); % 求幅频特性
db = 20*log10(mag/max(mag)); % 化为分贝值
db1=db';
figure,plot(0:pi/511:pi,db1),grid on
axis([0,4.0,-80,5]),title('数字滤波器——等波纹最佳逼近法')
【转】【MATLAB】模拟和数字低通滤波器的MATLAB实现的更多相关文章
- 模拟和数字低通滤波器的MATLAB实现
低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As=30dB,其他滤波器可以通过与低通之间的映射关系实现. %%模拟滤波器 %巴特沃斯——滤波器设计 wp=2*pi*2 ...
- 多普勒失真信号采样Matlab模拟分析
多普勒失真信号采样Matlab模拟分析 方案 水声通信指的是使用声信号在水中数据传输. 相对而言.电磁信号在水中吸收严重衰减过快,光信号受水中悬浮颗粒的影响,也无法完毕远距离传输. 这两种信号的传播距 ...
- 《数字图像处理(MATLAB)》冈萨雷斯
<数字图像处理(MATLAB)>冈萨雷斯 未完结! 参考:数字图像处理——https://blog.csdn.net/dujing2019/article/category/8820151 ...
- 基于小波变换的数字图像处理(MATLAB源代码)
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...
- MATLAB模拟布丰投针实验
MATLAB模拟布丰投针实验 标签(空格分隔): 算法 Buffon's Needle 桌面上有距离为a的若干平行线,将长度为L的针随机丢在桌面上,则这根针与平行线相交的概率是多少?假定L < ...
- MATLAB实现最优低通滤波器的函数
MATLAB实现最优低通滤波器的函数 % Fs --Data rate % Fpass --pass band % Fstop --Cutoff frequencies % Apass ...
- csdn vip文章:使用matlab模拟镜头失真
原文地址 https://blog.csdn.net/lircsszz/article/details/80249017 最近在研究图像校正,现将镜头失真中常见的径向畸变(radial distort ...
- 一些matlab教程资源收藏,使用matlab编程的人还是挺多的
Matlab教程专题资源免费下载整理合集收藏 <MATLAB从入门到精通>高清文字版[PDF] 103.9MB 简体中文 <矩阵实验室>(Mathworks.Matlab.R2 ...
- 程序点滴001_Python模拟点阵数字
尝试过很多编程语言,写过不少程序(当然,基本上都是些自娱自乐或给自己用的工具类的小玩意儿),逐渐认识到编写程序是一个不断完善.不断优化的过程——编程首先要有一个想法(目标),围绕这个目标形成最基本的功 ...
随机推荐
- 洛谷P3507 [POI2010]GRA-The Minima Game
题目描述 Alice and Bob learned the minima game, which they like very much, recently. The rules of the ga ...
- Ruby truthy and falsey
在Ruby里只有false 和nil表示falsey link: https://gist.github.com/jfarmer/2647362
- python 根据 数据库创建java 文件
#coding=utf-8 import pymysql import os import re # 包全路径 packagepath=r'E:\idea工程\dc-exam\dc-exam\src\ ...
- 江西财经大学第一届程序设计竞赛 I
链接:https://www.nowcoder.com/acm/contest/115/I来源:牛客网 题目描述 小P和小Q是好朋友,今天他们一起玩一个有趣的游戏. 他们的初始积分都为1,赢的人可以将 ...
- Java的观察者
class Teacher extends Observable { public void startLesson() { System.out.println(String.format(&quo ...
- Hibernate JPA 如何使用SQL文直接查询
对于复杂SQL,可以直接调用native sql来是实现 public List<Partner> findPartners() { List<Partner> partner ...
- 如何使用线程安全的HashMap
转载:https://blog.csdn.net/qq_31493821/article/details/78855069 HashMap为什么线程不安全 导致HashMap线程不安全的原因可能有两种 ...
- Python IDLE快捷键汇总
Python IDLE快捷键汇总 在Options→configure IDLE→keys,查看现存的快捷键,也可以配置选择快捷 编辑状态时: Ctrl+Shift+space(默认与输入法冲突,修改 ...
- Ancoda 下的python多版本共存
Ancoda 下的python多版本共存 virtualenv python 多版本共存 Pip, Virtualenv 和Fabric 被称为python 的三大神器,Pip 是包管理工具,Virt ...
- thinkphp的初步认识
框架的意义减少重复劳动便于团队配合增强安全性工作/面试都需要 为什么学习ThinkPHP国内公司用的多框架基本都是MVC架构,学一则通 一.框架的部署 1.1下载tp官网 http://www.thi ...