matlab编程设计fir滤波器,用MATLAB设计FIR滤波器
滤波器
滤波器定义
“滤波器(filter),是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的直流电。对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器,其功能就是得到一个特定频率或消除一个特定频率。”
滤波器种类
滤波器按照频率来分类,可分为高通、低通、带通、带阻以及全通滤波器,根据所需选择合适滤波器。
滤波器设计
滤波器的设计方法可分为两大类,一类是IIR,另一类是FIR。对于FIR的设计,一般可以采用等波纹以及窗的方法。
滤波器设计要求
采样频率50khz,带通滤波器,通带15KHz,阻带20KHz,阻带衰减50dB,用凯撒窗设计带通滤波器。
Matlab程序设计滤波器
首先在Matlab中设置所需参数:
fs = 50000;
T = 1/fs;
L = 4000;
t = (0:L-1)*T;
然后从r32文件中读取信号数据:
filename=['文件路径'];
fid=fopen(filename,'r');
Na=4000;
dat=fread(fid,[32,Na],'float');
data=dat(1,:); %data即为所导入信号
绘制信号时域图:
plot(t,data)
得到:
再对其进行FFT:
NFFT = 2^nextpow2(L);
Y = fft(data,NFFT)/L;
f=fs/2*linspace(0,1,NFFT/2+1);
figure
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-sided Amplitude Spectrum of y(t)')
xlabel('Frequency(Hz)')
ylabel('|Y(f)|')
得到:
设计滤波器:
fs = 50000;
f = [13000 15000 20000 22000];
dev = [0.01 0.02 0.01];
a = [0 1 0];
[n,wn,beta,ftype] = kaiserord(f,a,dev,fs);
b = fir1(n,wn,'bandpass');
freqz(b)
得到滤波器的幅值相位图:
所设计滤波器的分子系数存于b中,使所给信号通过所设计的滤波器,所用程序如下:
d=filter(b,1,data);
plot(t,d)
得到滤波后的信号时域图:
对其进行FFT:
Y _af= fft(d,NFFT)/L;
f_af=fs/2*linspace(0,1,NFFT/2+1);
figure
plot(f_af,2*abs(Y_af(1:NFFT/2+1)))
xlabel('Frequency(Hz)')
得到:
利用Matlab工具箱设计滤波器
另外,还有一种更加快捷的设计方法,即使用Matlab自带的工具箱filterDesigner来设计滤波器:
在Matlab的命令行窗口中输入filterDesigner,得到如下窗口:
通过选择设置,可以得到滤波器的系数,以本题为例:
其系数如下:
可对其到处头文件,进行数据处理。
总结
本人对于数字信号处理这门课的学习比较冲忙,对于很多知识点都是比较模糊,希望在后续所需时能够进一步的加深理解。
在FIR滤波器设计的过程中,遇到一个比较困惑的点是,根据其他的案例,滤波器系数是包含分子系数以及分母系数,但本例产生的滤波器仅含分母系数,比较困惑,请大佬们指教!
matlab编程设计fir滤波器,用MATLAB设计FIR滤波器相关推荐
- matlab设计风电机外部控制器,【matlab编程代做】步进电机控制器设计
<[matlab编程代做]步进电机控制器设计>由会员分享,可在线阅读,更多相关<[matlab编程代做]步进电机控制器设计(8页珍藏版)>请在人人文库网上搜索. 1.步进电机控 ...
- MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排
本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:156204968@qq.com. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于 ...
- fortran和matlab编程的区别,fortran和matlab
MATLAB 与C C + + .FORTRAN语言混合编程_工学_高等教育_教育专区.综合使用Matlab与c语言 MATLAB 与C/ C + + .FORTRAN语言混合编程摘要:对MATLAB ...
- 汽车理论matlab编程,汽车理论课后作业matlab编程详解(带注释)[试题学习]
<汽车理论课后作业matlab编程详解(带注释)[试题学习]>由会员分享,可在线阅读,更多相关<汽车理论课后作业matlab编程详解(带注释)[试题学习](11页珍藏版)>请在 ...
- 汽车理论matlab编程,汽车理论课后作业matlab编程详解带注释[10页]
<汽车理论课后作业matlab编程详解带注释[10页]>由会员分享,可在线阅读,更多相关<汽车理论课后作业matlab编程详解带注释[10页](11页珍藏版)>请在读根文库上搜 ...
- 线性正切制导 matlab编程实现,数学建模之MATLAB编程
EverydayOneCat ✖️N 「Sushi shop!」 知识点 1.下载 链接:https://pan.baidu.com/s/1DbfysOOwIoSvt8HQUw0jhw 提取码:75m ...
- 计算方法matlab编程徐萃薇,计算方法课程设计--用Newton插值多项式处理磁化曲线.docx...
计算方法课程设计 题 目: 用Newton插值多项式 处理磁化曲线 学 院: 理学院 班 级: 数学 15-1 学 生 姓 名: 陈昌林 学 生 学 号: 2014028281 指 导 教 师: 石瑞 ...
- MFC与Matlab编程总结 (以《Matlab与C/C++混合编程技术(第三版)》-刘维 第五章 生成DLL为例)
近期要完成一个任务,把人脸超分辨率的算法集成在一个系统中,嵌入人脸库及字典集等.老板的要求是有比较好的界面,目前也只能是VS那一套了,前一段时间完成的项目是用的MFC,这次也就是用MFC来完成吧.但是 ...
- matlab编程教程ppt,机械优化设计(MATLAB编程教程+习题).ppt
--(完美WORD文档DOC格式,可在线免费浏览全文和下载)值得下载! 案例 如图,有一块边长为6m的正方形铝板,四角截去相等的边长为x的方块并折转,造一个无盖的箱子,问如何截法(x取何值)才能获得最 ...
- matlab编程的步骤,如何画matlab程序的流程图?求解答
NF=input('请输入短路点的数目:NF='); %输入短路点的数目NF for i1=1:NF %给i1赋值短路点的数目,从1到NF clear; %清除 n1=input('请输入 ...
最新文章
- C 语言编程 — GCC 工具链
- POJ 1679 The Unique MST(次小生成树)
- 面试总结-腾讯产品群面
- JavaWeb黑马旅游网-学习笔记05【分类数据展示功能】
- 乱码 讯飞 语音识别_一段讯飞、百度等语音识别API无法识别的语音最终解决办法...
- tar 解压_关于Ubuntu下解压tar.xz方法记录
- 从函数调用来思考多态
- auxiliary variable(辅助变量)的引入
- Ubuntu更改hosts档
- 开发uni-app时HBuilderX编辑器使用微信小程序模拟器保存代码无法刷新模拟器问题
- 微信内置浏览器打开所有页面空白解决方案
- jquery自定义插件_创建一个自定义jQuery插件
- Dreamoon Likes Coloring
- tomcat图标修改——东子破解
- 2022-2028年全球与中国护眼台灯行业深度分析
- visual studio2019安装opencv
- FPGA第五节:ADDA实验
- Office2010:为什么我的PPT需要修复?
- win10无法修改mac地址_一款MAC地址修改软件WiFiSpoof for Mac激活版
- 计算机科学与技术考研调剂信息,中国科学技术大学计算机科学与技术学院2020考研调剂信息...