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

news2024/11/27 6:24:27

目录

一.实验内容

二.代码分析

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);
        end
        if min>signal(i)
            min=signal(i);
        end
    end
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 on

subplot(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 on

subplot(2,3,2);
stem(0:N(2)-1,abs(X2),'.');
title("X2");
grid on

subplot(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 on

subplot(2,3,5);
stem(0:N(2)-1,angle(X2),'.');
title("X2");
grid on

subplot(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.coloradmin.cn/o/1318915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[elementPlus] teleported 在 ElSubMenu中的用途

如图 一个菜单对应的路由结构如上图 如果做适配窄屏幕 如果在 <ElSubMenu :index"route.path" >中不加入 teleported 就会出现问题 加上就OK了 <ElSubMenu :index"route.path" teleported>

git 切换远程地址分支 推送到指定地址分支 版本回退

切换远程地址 1、切换远程仓库地址&#xff1a; 方式一&#xff1a;修改远程仓库地址 【git remote set-url origin URL】 更换远程仓库地址&#xff0c;URL为新地址。 git remote set-url https://gitee.com/xxss/omj_gateway.git 方式二&#xff1a;先删除远程仓库地址&…

前端对接 —— 周末

1.点击校验 点击校验 宇哥 记得过滤 不能校验的数据&#xff08;我后端还要检验吗&#xff1f;&#xff09; 2.前端数据对接 这个可以吗&#xff1f; 这种的可以吗&#xff1f;

基于多智能体系统一致性算法的电力系统分布式经济调度策略MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献&#xff1a; 主要内容&#xff1a; 应用多智能体系统中的一致性算法&#xff0c;以发电机组的增量成本和柔性负荷的增量效益作为一致性变量&#xff0c;设计一种用于电力系统经济调度的算法&#x…

力扣第 375 场周赛 解题报告 | 珂学家 | 区间合并+组合数学

前言 整体评价 难得的手速场&#xff0c;这几题都比较套路&#xff0c;确实区间合并很久没考察到了。 不过T4有多种解&#xff0c;栈模拟/差分/链式并查集&#xff0c;都可以的。 欢迎star gitee github T1. 统计已测试设备 思路: 差分思维 class Solution {public int co…

持续集成交付CICD:基于 GitLabCI 与 JenkinsCD 实现后端项目发布

目录 一、实验 1. GitLabCI环境设置 2.优化GitLabCI共享库代码 3.JenkinsCD 发布后端项目 4.再次优化GitLabCI共享库代码 5.JenkinsCD 再次发布后端项目 一、实验 1. GitLabCI环境设置 &#xff08;1&#xff09;GitLab给后端项目添加CI配置路径 &#xff08;2&#xf…

CPU告警不用愁,用C语言编写CPU使用率限制程序

现在云服务已经深入千家万户了&#xff0c;不仅商用&#xff0c;私用也很多。很多云服务厂商也都有配套的服务器安全模块&#xff0c;可以检测网络流量异常、内存占用量和CPU占用率&#xff0c;并且允许人工设置告警阈值。例如&#xff0c;CPU持续大于90%10分钟&#xff0c;那么…

LLM大语言模型(二):Streamlit 无需前端经验也能画web页面

目录 问题 Streamlit是什么&#xff1f; 怎样用Streamlit画一个LLM的web页面呢&#xff1f; 文本输出 页面布局 滑动条 按钮 对话框 输入框 总结 问题 假如你是一位后端开发&#xff0c;没有任何的web开发经验&#xff0c;那如何去实现一个LLM的对话交互页面呢&…

学生管理系统--课程设计项目(Java+SQL server)

本科参与项目文档合集: 点击跳转~ 学生管理系统 Student Management System 学校&#xff1a;山东科技大学 指导老师&#xff1a;杨 * * 教授 学号&#xff1a;2019032**** 学生姓名&#xff1a;安** 专业班级&#xff1a;计算机19-1 山东科技大学 二〇二〇年七月 项目文档目录…

eNSP小实验--实现全网互通

目录 一、建立以下拓扑图&#xff0c;并实现全网互通 二、分析 1、接入层交换机SW4、SW5划分vlan 2、汇聚层交换机SW2,SW3配置ip作为vlan网关&#xff0c;与SW1直连 3、核心交换机SW1配置ip 与汇聚层交换机和R1直连 4、SW1,SW2,SW3,R1配置静态路由&#xff0c;使得vlan10,…

京东体育用品销售数据分析与可视化系统

京东体育用品销售数据分析与可视化系统 前言数据爬取模块1. 数据爬取2. 数据处理3. 数据存储 数据可视化模块1. 数据查看2. 店铺商品数量排行3. 整体好评率4. 不同品牌市场占比5. 品牌差评率排名6. 品牌价格排名7. 品牌评论数量分布 创新点 前言 在体育用品行业&#xff0c;了…

IDEA卡顿,进行性能优化设置(亲测有效)——情况一

需求场景 IDEA重新激活后&#xff0c;运行IDEA卡的非常卡顿&#xff0c;没有运行项目&#xff0c;CPU占比也非常高: 原因分析 可能的原因是&#xff0c;在IDEA的配置中&#xff0c;给他分配的空间比较小 解决方式 步骤一 选择顶部导航栏中的Help&#xff0c;然后点击Edi…

小项目:迷宫二

目录 引言一、题目描述二、解题思路三、代码实现四、测试 引言 这个迷宫项目是今天参加学校的一个比赛出的题目&#xff0c;从早上九点基本搞到了四五点才完成&#xff0c;其实写出来发现基本思路其实挺简单的&#xff0c;就是想不好想&#xff0c;真的要各种的尝试&#xff0…

【数据分析之Numpy】Numpy中复制函数numpy.repeat()与numpy.tile()的使用方法及区别

一、简介 numpy.repeat()与numpy.tile()都是Numpy库中的复制函数&#xff0c;用于将数组中的元素重复指定的次数。 numpy.repeat()函数接受三个参数&#xff1a;要重复的数组、重复的次数和重复的轴。 numpy.tile()函数接受两个参数&#xff1a;要重复的数组和重复的次数。 二…

C语言学习第二十六天(算法的时间复杂度和空间复杂度)

1、算法效率 衡量一个算法的好坏&#xff0c;是从时间和空间两个方面来衡量的&#xff0c;换句话说就是从时间复杂度和空间复杂度来衡量的 这里需要补充一点&#xff1a;时间复杂度是衡量一个算法的运行快慢&#xff0c;空间复杂度是主要衡量一个算法运行所需要的额外空间。 …

面试 Java 算法高频题五问五答第一期

面试 Java 算法高频题五问五答第一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;括号生成: 数字 n 代表生成括号的对数&#xff0c;请你设计一个…

neuq-acm预备队训练week 10 P1129 [ZJOI2007] 矩阵游戏

题目描述 小 Q 是一个非常聪明的孩子&#xff0c;除了国际象棋&#xff0c;他还很喜欢玩一个电脑益智游戏――矩阵游戏。矩阵游戏在一个 nn 黑白方阵进行&#xff08;如同国际象棋一般&#xff0c;只是颜色是随意的&#xff09;。每次可以对该矩阵进行两种操作&#xff1a; 行…

STM32F103RCT6开发板M3单片机教程04--按键检测

原画图讲解 本教程使用是&#xff08;光明谷SUN_STM32mini开发板&#xff09; 首先了硬件连接原理&#xff0c;STM32F103RCT6开发板是mini最小系统板&#xff0c;板子在没并有按键。需要自行用面包板搭建。 硬件连接&#xff1a; PC10 -> KEY1 &#xff08;MCU内部上拉…

创投课程第五期 | 超越比特币:探索BTC生态的无限可能

协会邀请了来自水滴资本&#xff08;Waterdrip Capital&#xff09;的投资总监——Elaine&#xff0c;作为VC创投课程第5期的嘉宾&#xff0c;在北京时间12月17日(周日)晚上21:00 PM-22:00 PM&#xff0c;届时将与所有对Web3投资、创业心怀热忱的朋友们共同探讨《超越比特币&am…