我是靠谱客的博主 文静玉米,最近开发中收集的这篇文章主要介绍频率响应函数与数字滤波实验_IIR滤波信号实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

IIR滤波信号实验

一、IIR滤波器原理

数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:

b7bfe3c615a600c2434de2b41974df2f.png

其中

c94553db5954c0d780fa401cecd67aeb.png

分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),

5602650bf2f8851f9256f1ee21ec977d.png

是数字滤波器的单位取样响应的频谱,又称为数字滤经过滤波后的频域响应。只要按照输入信号频谱的特点和处理信号的目的,适当选择

ad3cea0b2ce77ae15b0e26b6e31d823a.png

,使得滤波后

5d49022fd39c9f71a6a358a2c745184d.png

满足设计的要求,这就是数字滤波器的滤波原理。

数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现,其差分方程为:

24cb26d2f3c6b7ccd450b7142ac29382.png

进行Z变换,可得:

6dc1c7d3cd9fef1d153fc13d8ced83e0.png

于是得到IIR数字滤波器的系统函数:

c6613ef162774f2298230f9f10aab85f.png

设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。

二、FFT仿真过程

第一步、创建工程

1、在ccs安装位置下ccsstudio_v3.3Myprojects文件夹创建一个文件夹命名为IIR.

68bebb127de71632d7d90ee86a73a9a5.png

2、将编写的程序文件保存在FFT中

3、打开ccs软件

e041d190ea02aaa13dcc3d529dfbefd5.png

4、在ccs中新建一个工程,从project菜单中选择New

f11faa92894a2a6fbccf1605d10dc364.png

5、在Project Name中输入“IIR”

e5cae5d7d9359992de29c7b38991dc40.png

然后点击Finish,ccs就创建了一个名为IIR.pjt的工程。

d452886bd0123a7c8cc4fa72b159b0b6.png

第二步、添加文件到工程中

1选择Project--Add Files to Project 添加IIR.c等文件

9f97018d035b081cbd27d1a02aca0a48.png

2、选择Project--Add Files Project,找到.ccstudio_v3.3c2000cgtoolslib,选择与c54xx CA Simulators对应的库文件.

164f87d7f5e4610061a8a4c8bcd8c902.png

3、在IIR.pjt上右击,选择Scan All File Dependencies,系统会添加相关的头文件。

6b1ee2eb0b723b6a1ec99e54ca7be84e.png

第三步、查看程序,并编译运行

1、选择Project-Rebuild All,程序将编译、综合、连接。

22912ad075ec23a598b7fdf48a915c0d.png

也可以选择工具栏中的按钮;默认情况下,工程文件的debug文件夹中将生成.out文件。

2、选择File-Load Program,选择刚才生成的IIR.out,点击OPen

第四步、观察图形

1、选择View-Graph-Time/Frequency

2、在对话框中修改参数如下图

6110f9c0afb79111e2b664053f961c1d.png

3、点击ok,运行后将会出现一个图形窗口,运行程序得到输入信号的时域图如下

cea727496705b2dac11c3b1ff005e88e.png

输入信号的频域图

5085874a1b105da855c349ab9d41726f.png

4、再次选择View-Graph-Time/Frequency 修改参数如下:

aa096430637c2b790358d8fd2021893c.png

输出信号时域图如下:

eacd42d40f5ff6108f345796b664e00a.png

输出频域图

ecdb327eb8c5e13b34ba7dbefff4cd23.png

三、总结

仿真结果:有仿真输入波形时域是混合波的叠加,在频域分析时我们可以看出该输入信号是一低频和一高频的叠加。当我们将该信号通过一IIR滤波器时,我们从输出波形看到,时域是一余弦波,频域也只保留了低频频率成分,这说明混合信号通过IIR滤波器后,高频成分被滤除,符合滤波器功能,因此CCS可以作为一种模拟滤波器功能的软件。

附:程序

IIR.c

#include <math.h>

#define signal_1_f 500

#define signal_2_f 10000

#define signal_sample_f 25000

#define pi 3.1415926

#define IIRNUMBER_L 2

#define bufer_L 256

int N_L=IIRNUMBER_L;

int data_in[bufer_L];

int out[bufer_L] ;

int x[IIRNUMBER_L+1];

int y[IIRNUMBER_L+1];

int k=0;

int bufer=bufer_L;

int fBn[IIRNUMBER_L]={0,0x634a};

int fAn[IIRNUMBER_L]={0xe5c,0xe5c};

extern int iir(int *x,int *y,int *fAn,int *fBn,int N_L);

extern int init(int *,int *,int);

extern int outdata(int *,int,int);

void inputwave();

void main()

{int iirout;

inputwave();

init(x,y,N_L);

while(1)

{x[0]=data_in[k];

iirout=iir(x,y,fAn,fBn,N_L);

outdata(out,iirout,bufer);

k++;

if(k>=bufer_L)

{

k=0;

}}}

void inputwave()

{

float wt1;

float wt2;

int i;

for(i=0;i<=bufer_L;i++)

{

wt1=2*pi*i*signal_1_f;

wt1=wt1/signal_sample_f;

wt2=2*pi*i*signal_2_f;

wt2=wt2/signal_sample_f;

data_in[i]=(cos(wt1)+cos(wt2))/2*32768;

}

}

最后

以上就是文静玉米为你收集整理的频率响应函数与数字滤波实验_IIR滤波信号实验的全部内容,希望文章能够帮你解决频率响应函数与数字滤波实验_IIR滤波信号实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部