matlab的fir1的ftype,数字滤波器的matlab与FPGA实现读书笔记(二)FIR滤波器的matlab设计(窗函数)...

本文主要是介绍matlab的fir1的ftype,数字滤波器的matlab与FPGA实现读书笔记(二)FIR滤波器的matlab设计(窗函数)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FIR滤波器的matlab设计

采样fir1函数设计

b= fir1(n,wn),

b= fir1(n,wn,’ftype’)

b= fir1(n,wn,’ftype’,window)

b= fir1(…,’noscale’)

函数参数说明

b:返回的FIR滤波器单位脉冲响应,脉冲响应为偶对称,长度为n+1

n:滤波器的阶数,需要注意的是,设计出的滤波器长度为n+1.

wn:滤波器的截至频率,;需要注意的是,wn的取值范围为0< wn<1, 1对应为信号采样频率的1/2;如果wn是个单个数值,且ftype参数为low,则表示设计截止频率为wn的低通滤波器,如ftype,参数为high,则表示设计截止频率为wn的高通滤波器,如果wn是由两个数组成的向量[wn1,wn2],ftype为stop,则表示设计带阻滤波器,ftype为bandpass,则表示设计带通滤波器;如果wn是由多个数组成的向量,则表示根据ftype的值设计多个带通或带阻的滤波器;ftype为DC-1,表示设计的第一个频带为通带,ftype为DC-0,表示设计的第一个频带为阻带。

window:指定使用的窗函数向量,默认为海明窗(Hamming),最常用的窗函数有汉宁窗(Hanning)、海明(Hamming)窗、布拉克曼(Blackman)窗和凯塞(kaiser)窗,可以在MATLAB界面中输入help window命令查询各种窗函数名称。

noscale: 指定是否归一化滤波器的幅度。

2.函数使用方法

例:设计一个归一化截止频率为0.2,阶数为11、采用海明窗的低通滤波器

b= fir1(11,0.2);

plot(20*log(abs(fft(b)))/log(10))

例: 分别设计长度为41的低通(截止频率为200HZ)、高通(截止频率为200HZ)、带通(通带为200400HZ)、带阻滤波器(阻带为200400HZ)FIR滤波器采样频率为2000HZ

N = 41; %滤波器长度

fs =2000; %采样频率

%各种滤波器的特征频率

fc_lpf =200;

fc_hpf =200;

fp_bandpass= [200,400];

fc_stop =[200,400];

%以采样频率的一半,对频率进行归一化处理

wn_lpf =fc_lpf2/fs;

wn_hpf =fc_hpf2/fs;

wn_bandpass= fp_bandpass2/fs;

wn_stop =fc_stop2/fs;

%采样fir1函数设计FIR滤波器

b_lpf =fir1(N-1,wn_lpf);

b_hpf =fir1(N-1,wn_hpf,‘high’);

b_bandpass= fir1(N-1,wn_bandpass,‘bandpass’);

b_stop =fir1(N-1,wn_stop,‘stop’);

%求滤波器的幅频响应

m_lpf =20log(abs(fft(b_lpf)))/log(10);

m_hpf =20log(abs(fft(b_hpf)))/log(10);

m_bandpass=20log(abs(fft(b_bandpass)))/log(10);

m_stop =20log(abs(fft(b_stop)))/log(10);

%设置幅频响应的横坐标单位为HZ

x_f=[0:(fs/length(m_lpf)):fs/2];

%绘制单位脉冲响应

subplot(421);stem(b_lpf);xlabel(‘n’);ylabel(‘h(n)’);

subplot(423);stem(b_hpf);xlabel(‘n’);ylabel(‘h(n)’);

subplot(425);stem(b_bandpass);xlabel(‘n’);ylabel(‘h(n)’);

subplot(427);stem(b_stop);xlabel(‘n’);ylabel(‘h(n)’);

%绘制幅频响应曲线

subplot(422);plot(x_f,m_lpf(1:length(x_f)));xlabel(‘频率(HZ)’,‘fontsize’,8);ylabel(‘幅度(dB)’,‘fontsize’,8);

subplot(424);plot(x_f,m_hpf(1:length(x_f)));xlabel(‘频率(HZ)’,‘fontsize’,8);ylabel(‘幅度(dB)’,‘fontsize’,8);

subplot(426);plot(x_f,m_bandpass(1:length(x_f)));xlabel(‘频率(HZ)’,‘fontsize’,8);ylabel(‘幅度(dB)’,‘fontsize’,8);

subplot(428);plot(x_f,m_stop(1:length(x_f)));xlabel(‘频率(HZ)’,‘fontsize’,8);ylabel(‘幅度(dB)’,‘fontsize’,8);

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

例:采样各种窗函数,利用MATLAB软件分别设计截止频率为200HZ、采样频率为2000HZ的FIR低通滤波器,滤波器长度为81

N = 81; %滤波器长度

fs =2000; %采样频率

fc = 200; %低通滤波器的截止频率

%生成各种窗含数

w_rect =rectwin(N)’;

w_hann =hann(N)’;

w_hamm =hamming(N)’;

w_blac =blackman(N)’;

w_kais =kaiser(N,7.856)’;

%采用fir1函数设计FIR滤波器

b_rect =fir1(N -1 ,fc2/fs,w_rect);

b_hann =fir1(N -1 ,fc2/fs, w_hann);

b_hamm =fir1(N -1 ,fc2/fs, w_hamm);

b_blac =fir1(N -1 ,fc2/fs, w_blac);

b_kais =fir1(N -1 ,fc2/fs, w_kais);

%求滤波器的幅频响应

m_rect =20log(abs(fft(b_rect,512)))/log(10);

m_hann =20log(abs(fft(b_hann,512)))/log(10);

m_hamm =20log(abs(fft(b_hamm,512)))/log(10);

m_blac =20log(abs(fft(b_blac,512)))/log(10);

m_kais =20log(abs(fft(b_kais,512)))/log(10);

%设置幅频响应的坐标单位为HZ

x_f =[0:(fs/length(m_rect)):fs/2];

%只显示正频率部分的幅频响应

m1 =m_rect(1:length(x_f));

m2 =m_hann (1:length(x_f));

m3 =m_hamm (1:length(x_f));

m4 =m_blac (1:length(x_f));

m5 =m_kais (1:length(x_f));

%绘制幅频响应曲线

plot(x_f,m1,’.’,x_f,m2,’*’,x_f,m3,‘x’,x_f,m4,’–’,x_f,m5,’-’);

xlabel(‘频率(Hz)’,‘fontsize’,8);ylabel(‘幅度(dB)’,‘fontsize’,8);

legend(‘矩形窗’,‘汉宁窗’,‘海明窗’,‘布拉克窗’,‘凯塞窗’);

grid;

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

这篇关于matlab的fir1的ftype,数字滤波器的matlab与FPGA实现读书笔记(二)FIR滤波器的matlab设计(窗函数)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377328

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount