实验五 卷积算法
实验五卷积算法
一.实验目的
1.掌握卷积算法的原理和计算方法
2., 熟悉卷积算法特性
3. 学习卷积算法的程序实现
二.实验设备
PC 兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP ,以下默认为 Windows2000) ,安装Code Composer Studio 3.1 软件。
三. 实验原理
1. 卷积的基本原理和公式:
卷积和:对离散系统“卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。 卷积和的运算在图形表示上可分为四步:
①翻褶先在亚变量坐标M 上作出x(m)和h(m),将m=0 的垂直轴转为轴翻褶成h(-m)。 ②移位将h(-m)移位n ,即得h(n-m)。当n 为正整数时,右移n 位。当n 为负整数时,左移n 位。 ③相乘再将h(n-m)和x(m)的相同m 值的对应点值相乘。
④相加把以上所有对应点的乘积叠加起来,即得y(n)值。
依上法,取n=„,-2,-1,0,1,2,3, „各值,即可得全部y(n)值。
2.源程序及注释:
* 程序的自编函数及其功能:
①processing1(int *input2, int *output2):
调用形式:processing1(int *input2, int *output2)
参数解释:intput2、output2 为两个整型指针数组。
返回值解释:返回了一个“TRUE ”,让主函数的while 循环保持连续。
功能说明:对输入的input2 buffer 波形进行截取m 点,再以零点的Y 轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2 指针开始的一段地址空间中。 ②processing2(int *output2, int *output3):
调用形式:processing2(int *output2, int *output3)
参数解释:output2、output3 为两个整型指针数组。
返回值解释:返回了一个“TRUE ”,让主函数的while 循环保持连续。
功能说明:对输出的output2 buffer 波形进行作n 点移位,然后把生成的波形上的各点的值存入以OUTPUT3 指针开始的一段地址空间中。
③processing3(int *input1,int *output2,int *output4):
调用形式:processing3(int *input1,int *output2,int *output4)
参数解释:output2、output4、input1 为三个整型指针数组。
返回值解释:返回了一个“TRUE ”,让主函数的while 循环保持连续。
功能说明:对输入的input2 buffer 波形和输入的input1 buffer 作卷积和运算,然后把生成的波形上的各点的值存入以OUTPUT4 指针开始的一段地址空间中。
④processing4(int *input2,int *output1):
调用形式:processing4(int *input2,int *output1)
参数解释:output1、input2 为两个整型指针数组。
返回值解释:返回了一个“TRUE ”,让主函数的while 循环保持连续。
功能说明:对输入的input2 buffer 波形截取m 点,然后把生成的波形上的各点的值存入以OUTPUT1 指针开始的一段地址空间中。
四.实验步骤
1.实验准备:
- 设置软件仿真模式;
-硬件连接;
- 启动CCS 。
2.打开工程,浏览程序工程目录
C:\ICETEK-VC5509-EDULab\Lab0504-Convolve\Convolve.pjt
3.编译并下载程序。
4.设置输入数据文件:
请在volume.c 程序中有注释“break point”的两行上设置probe point 和break point:
设置方法是把光标指示到这一行上,按鼠标右键,从显示的菜单上分别选择probe point 和 break point。
5.打开观察窗口:
- 选择菜单View->Graph->Time/Frequency…进行如下设置:
- 选择菜单View->Graph->Time/Frequency…进行如下设置:
- 选择菜单View->Graph->Time/Frequency…进行如下设置:
- 在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。
6.设置波形输入文件,请按照如下设置:
-选择菜单File->File I/O…,打开“File I/O”窗口;单击“Add File”按钮,在“File Input”窗口中选择工程目录下的sine11.dat 文件,单击“打开”按钮;在“Address ”项中输入inp1_buffer,在“Length ”项中输入64,在“Warp Around”项前加上选择标记,单击“Add Probe Point”按钮;
-在“Break/Probe/Profile Points”窗口中单击“Probe Point”列表中的“Convolve.c line62
-选择“File ”菜单中的“File I/O…”,打开“File I/O”窗口;单击“Add File”按钮,在“FileInput ”窗口中选择工程目录下的sine11.dat 文件,单击“打开”按钮;在“Address ”项中输入inp2_buffer,在“Length ”项中输入64,在“Warp Around”项前加上选择标记,单击“Add Probe Point”按钮;
-在“Break/Probe/Profile Points”窗口中单击“Probe Point”列表中的“Convolve.c line63
7.运行程序,观察结果:
-在“jishu++;//在此处加断点”上设置break 断点。
-按F5 键运行程序,待程序停留上面那条语句处;观察刚才打开的三个图形窗口,其中显示的是输入和输出的时域波形;
8.输入波形文件改成其他波形,如:sin22.dat 等,观察运行结果。在修改输入波形文件时须首先将原文件删除;在重新运行程序时,先选择菜单“Debug ”的“Reset CPU”、“Restart ”、“Go Main”,再选择“Debug ”中“Run ”或按一下F5 即可。
五、实验结果
1)当输入波形均为sin11.dat 时,得到的卷积时域图为; Input 波形:
Output 波形:
2)当输入波形均为sin22.dat 时,得到的卷积时域图为; Input 波形
:
Output 波形:
3)当输入波形均为方波.dat 时,得到的卷积时域图为; Input 波形
:
Output 波形: