数字滤波器设计——Matlab实现数字信号处理<1>

目录

一.实验内容

二.代码分析

1.信号产生部分

2.利用傅立叶级数展开的方法,自由生成所需的x(t)

3.通过选择不同的采样间隔T(分别选T>或<1/2fc),从x(t)获得相应的x(n)

3.对获得的不同x(n)分别作傅立叶变换,分析其频率响应特性(给出幅频与相频特性曲线)

4.利用巴特沃思滤波器设计数字滤波器

<1>低通滤波器

<2>高通滤波器

<3>绘图

5.利用窗函数设计法或频率采样法设计数字滤波器

<1>高通滤波器

<2>低通滤波器

<3>绘图

三.实验结果


一.实验内容

1.利用傅立叶级数展开的方法,自由生成所需的x(t);

2.通过选择不同的采样间隔T(分别选T>或<1/2fc),从x(t)获得相应的x(n)(作出x(n)图形);

3.对获得的不同x(n)分别作傅立叶变换,分析其频率响应特性(给出幅频与相频特性曲线);

4.利用巴特沃思、切比雪夫或椭圆滤波器设计数字滤波器(滤波特性自定),要求通过改变滤波器参数或特性(低通、高通、带通或带阻)设计至少两种数字滤波器,分析所设计滤波器(画出频率特性曲线),并对上述给出的不同x(n)分别进行滤波(画出滤波结果),然后加以讨论;

5.利用窗函数设计法或频率采样法设计数字滤波器(滤波特性自定),要求通过改变滤波器参数或特性(低通、高通、带通或带阻等)设计至少两种数字滤波器,分析所设计滤波器(画出频率特性曲线),并对上述给出的不同x(n)分别进行滤波(画出滤波结果),然后加以讨论。

二.代码分析

1.信号产生部分
function [signal]=signal_xt(t_length,T,f,A,u)
%%  函数描述
%   功能:利用傅立叶级数展开的方法,自由生成所需的x(t)(不含直流量);
%   输入参数:产生序列的长度t_length;采样间隔T;f(t)的基波频率f;傅立叶级数展开的各项幅值和相位。故最高频率为fc=length(A)*f
%   使用举例:signal=signal_xt(3,0.01,1,[1,2,3,4],[0,1,0,1])
%%  t,y初始化并计算
t=0:T:t_length-T;
t_num=t_length/T;
signal=zeros(1,t_num);
max=0;
min=0;
for i=1:t_num  for k=1:length(A)%   计算函数值signal(i)= signal(i) + A(k)*cos(2*pi*k*t(i)*f+u(k));%   最大最小值记录if max<signal(i)max=signal(i);endif min>signal(i)min=signal(i);endend
end
%%  结果展示
figure;
subplot(2,1,1);
plot(t,signal);
%   x,y轴范围限制及标题
axis([0-0.1,t_length+0.1,min-0.5,max+0.5])
title('x(t)'); 
xlabel('t');
ylabel('x(t)'); 
grid onsubplot(2,1,2);
stem(t,signal,".");
%   x,y轴范围限制及标题
axis([0-0.1,t_length+0.1,min-0.5,max+0.5])
title('x(t)'); 
xlabel('t');
ylabel('x(t)'); 
grid on

function [signal]=signal_xt(t_length,T,f,A,u)
%%  函数描述
%   功能:利用傅立叶级数展开的方法,自由生成所需的x(t)(不含直流量);
%   输入参数:产生序列的长度t_length;采样间隔T;f(t)的基波频率f;傅立叶级数展开的各项幅值和相位。故最高频率为fc=length(A)*f
%   使用举例:signal=signal_xt(3,0.01,1,[1,2,3,4],[0,1,0,1])

2.利用傅立叶级数展开的方法,自由生成所需的x(t)
%%  利用傅立叶级数展开的方法,自由生成所需的x(t),即signal_origin;
t_length=1;     %生成长度
f=1;            %基础频率
A=[3,1,1,3];    %各项幅度
u=[-1,0,1,0];   %各项相位
signal_origin=signal_xt(t_length,0.01,f,A,u);
fc=f*length(A);
3.通过选择不同的采样间隔T(分别选T>或<1/2fc),从x(t)获得相应的x(n)
%%  通过选择不同的采样间隔T(分别选T>或<1/2fc),从x(t)获得相应的x(n);
T=[1/(2*fc+1),1/fc,1/(4*fc)];
N=zeros(1,length(T));
for i=1:length(T)N(i)=1/T(i);
end
x1=signal_xt(t_length,T(1),f,A,u);
x2=signal_xt(t_length,T(2),f,A,u);
x3=signal_xt(t_length,T(3),f,A,u);

选取频率分别为2fc+1、fc、4fc

3.对获得的不同x(n)分别作傅立叶变换,分析其频率响应特性(给出幅频与相频特性曲线)
%%  对获得的不同x(n)分别作傅立叶变换,分析其频率响应特性(给出幅频与相频特性曲线);
X1=fft(x1,N(1));
X2=fft(x2,N(2));
X3=fft(x3,N(3));%   绘制
figure;
%   幅值绘制
subplot(2,3,1);
stem(0:N(1)-1,abs(X1),'.');
title("X1");
grid onsubplot(2,3,2);
stem(0:N(2)-1,abs(X2),'.');
title("X2");
grid onsubplot(2,3,3);
stem(0:N(3)-1,abs(X3),'.');
title("X3");
grid on%   相位绘制
subplot(2,3,4);
stem(0:N(1)-1,angle(X1),'.');
title("X1");
grid onsubplot(2,3,5);
stem(0:N(2)-1,angle(X2),'.');
title("X2");
grid onsubplot(2,3,6);
stem(0:N(3)-1,angle(X3),'.');
title("X3");
grid on

使用 fft 函数进行 DFT,注意结果频率响应是复数,使用abs函数得其幅值,angle函数得其相位。

4.利用巴特沃思滤波器设计数字滤波器
<1>低通滤波器
%   设置低通滤波器参数
wp=0.35;    %通带边界频率
ws=0.7;     %阻带截止频率
Rp=3;
As=15;
%   计算滤波器阶数N和3dB截止频率wc
[Nc,wc]=buttord(wp,ws,Rp,As,'s');
%   计算滤波器系统函数分子分母多项式系数
[Bz,Az]=butter(Nc,wc,'low');
wk=64;
Hk=freqz(Bz,Az,wk);

参数设置及函数使用参考课本《数字信号处理》

<2>高通滤波器
%   设置高通滤波器参数
wp=0.75;
ws=0.5;
rp=3;
rs=15;
[Nc,wc]=buttord(wp,ws,rp,rs,'s');
[Bz,Az]=butter(Nc,wc,'high');
wk=64; 
Hk=freqz(Bz,Az,wk);
<3>绘图
%   绘图
figure;
subplot(2,3,1);
stem(0:1/63:1,abs(Hk),'.');
xlabel('频率');
ylabel('滤波器幅度/dB');
grid on%   滤波后结果
m1=filter(Bz,Az,x1);
m2=filter(Bz,Az,x2);
m3=filter(Bz,Az,x3);
Y1=fft(m1,N(1));
Y2=fft(m2,N(2));
Y3=fft(m3,N(3));
%   绘图
subplot(2,3,4);
stem(0:N(1)-1,abs(Y1),'.');
title('滤波后Y频率特性');
grid on
subplot(2,3,5);
stem(0:N(2)-1,abs(Y2),'.');
title('滤波后Y频率特性');
grid on
subplot(2,3,6);
stem(0:N(3)-1,abs(Y3),'.');
title('滤波后Y频率特性');
grid on
5.利用窗函数设计法或频率采样法设计数字滤波器
<1>高通滤波器
%   设置高通滤波器参数
wp=pi/2;
ws=pi/4;
Bt=wp-ws;   %过渡带宽度
N0=ceil(6.2*pi/Bt); %汉宁窗计算所需h(n)长度N0
Nn=N0+mod(N0+1,2);  %确保h(n)长度为奇数
wc=(wp+ws)/2/pi;    %理想高通滤波器通带截止频率
hn=fir1(Nn-1,wc,'HIGH',hanning(Nn));
%   高通滤波器频率响应
Hk=fft(hn,length(hn));
<2>低通滤波器
%   设置低通滤波器参数
wp=pi/4;
ws=pi/2;
Bt=abs(wp-ws);   %过渡带宽度
N0=ceil(6.2*pi/Bt); %汉宁窗计算所需h(n)长度N0
Nn=N0+mod(N0+1,2);  %确保h(n)长度为奇数
wc=(wp+ws)/2/pi;    %理想高通滤波器通带截止频率
hn=fir1(Nn-1,wc,'LOW',hanning(Nn));
%   低通滤波器频率响应
Hk=fft(hn,length(hn));
<3>绘图
%   滤波结果
y1=conv(hn,x1);
y2=conv(hn,x2);
y3=conv(hn,x3);
n1=length(y1);
n2=length(y2);
n3=length(y3);
Y1=fft(y1,n1);
Y2=fft(y2,n2);
Y3=fft(y3,n3);
%   绘图
figure;
subplot(2,3,1);
stem(0:Nn-1,hn,'.');
xlabel('n');
ylabel('h(n)');
grid on
subplot(2,3,2);
stem(0:Nn-1,abs(Hk),'.');
xlabel('k');
ylabel('H(k)');
grid on
subplot(2,3,4);
stem(0:n1-1,abs(Y1),'.');
title('滤波后Y频率特性');
grid on
subplot(2,3,5);
stem(0:n2-1,abs(Y2),'.');
title('滤波后Y频率特性');
grid on
subplot(2,3,6);
stem(0:n3-1,abs(Y3),'.');
title('滤波后Y频率特性');
grid on

三.实验结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/283763.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021年数维杯国际大学生数学建模D题2021年电影市场票房波动模型分析求解全过程文档及程序

2021年数维杯国际大学生数学建模 D题 2021年电影市场票房波动模型分析 原题再现&#xff1a; 1、电影票房预测建模背景   随着人们文化消费需求的增加&#xff0c;电影院和银幕的数量不断增加&#xff0c;我国的电影产业不断呈现出繁荣景象。2019年&#xff0c;全国电影票房…

解决vscode终端显示乱码的问题!

不知道小伙伴们在使用vscode的时候有没有遇到中文乱码的问题&#xff0c;反正我是深深的被困扰着&#xff0c;而且我的调试控制台不会乱码&#xff0c;只有终端显示的时候乱码——非常奇怪。 我也是反反复复尝试了很多方法&#xff0c;终于解决了这个问题。 话不多说&#xf…

环境搭建及源码运行_java环境搭建_maven

书到用时方恨少、觉知此时要躬行&#xff1b;拥有技术&#xff0c;成就未来&#xff0c;抖音视频教学地址&#xff1a;​​​​​​​ ​​​​​​​ 1、介绍 1&#xff09;管理项目依赖和版本 统一的项目依赖和版本管理 ​​​​​​​​​​​ 2&#xff09;Maven支持多模块…

大模型自定义算子优化方案学习笔记:CUDA算子定义、算子编译、正反向梯度实现

01算子优化的意义 随着大模型应用的普及以及算力紧缺&#xff0c;下一步对于计算性能的追求一定是技术的核心方向。因为目前大模型的计算逻辑是由一个个独立的算子或者说OP正反向求导实现的&#xff0c;底层往往调用的是GPU提供的CUDA的驱动程序。如果不能对于整个计算过程学习…

企业计算机服务器中了halo勒索病毒如何解密,halo勒索病毒恢复流程

网络技术的不断发展与应用&#xff0c;为企业的生产运营提供了极大便利&#xff0c;越来越多的企业使用数据库存储企业的重要数据&#xff0c;方便工作与生产&#xff0c;但网络是一把双刃剑&#xff0c;网络安全威胁一直存在&#xff0c;并且网络威胁的手段也在不断升级。在本…

【【UART 传输数据实验】】

UART 传输数据实验 通信方式在日常的应用中一般分为串行通信&#xff08;serial communication&#xff09;和并行通信&#xff08;parallel communication&#xff09;。 我们再来了解下串行通信的特点。串行通信是指数据在一条数据线上&#xff0c;一比特接一比特地按顺序传…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)控件的部分公共属性和事件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;控件的部分公共属性和事件 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、公共属性 常用的公共属性有&#xff1a; 宽(with)、高(height)、…

【STM32】STM32学习笔记-对射式红外传感器计次 旋转编码器计次(12)

00. 目录 文章目录 00. 目录01. NVIC相关函数1.1 NVIC_PriorityGroupConfig函数1.2 NVIC_PriorityGroup类型1.3 NVIC_Init函数1.4 NVIC_InitTypeDef类型 02. 外部中断相关API2.1 GPIO_EXTILineConfig2.2 EXTI_Init2.3 EXTI_GetITStatus2.4 EXTI_ClearITPendingBit2.5 中断回调函…

详细解析POI 和 EasyExcel

在数据量需要被批量导入、导出的时候&#xff0c;就可以使用POI和easyExcel 常用场景&#xff1a; 1、将用户信息导出为excel表格(导出数据…) 2、将Excel表中的信息录入到网站数据库&#xff08;习题上传…&#xff09;大大减轻网站录入量!开发中经常会设计到excel的处理&am…

NNDL 作业11 LSTM [HBU ]

目录 习题6-4 推导LSTM网络中参数的梯度&#xff0c; 并分析其避免梯度消失的效果 >LSTM前向传播 >反向传播 求梯度 >梯度消失和梯度爆炸怎么来的&#xff1f; >关键点&#xff1a;LSTM如何缓解梯度消失&#xff1f; 习题6-3P 编程实现下图LSTM运行过程 1…

uniapp中uni-data-select下拉框组件如何去除边框?

在目录中找到文件夹。 找到下拉框组件文件夹 注释该文件夹以下代码就能实现下拉框不带边框。

主从reactor多线程实现

现场模型图片&#xff0c;从网上找的 出于学习的目的实现的&#xff0c;如有不对的地方欢迎留言知道&#xff0c;简单实现了http的请求&#xff0c;可通过postman进行访问 启动项目&#xff1a; 返回数据示例 postman请求 附上源码&#xff0c;有问题直接看源码吧