用conv函数,求解连续函数的卷积

用conv函数,求解连续函数的卷积
用conv函数,求解连续函数的卷积

东华理工大学软件学院

课程设计报告

课程设计题目:用conv函数求连续信号的卷积运算

学生姓名:詹振华

专业:信息工程

班级:081132

学号: 08113227

指导教师:李金萍

2010年1月6日

目录

实验目的 (1)

MATLAB简介 (2)

实验原理 (4)

程序代码 (5)

实验效果图 (6)

心得体会 (7)

参考文献 (7)

评分表格 (8)

一、试验目的

1、通过实验前对MATLAB软件的学习,更好的掌握MATLAB

软件的使用;

2、理解并掌握信号系统中的卷积定义及其应用;

3、学习并掌握在MATLAB中使用conv函数求解卷积积分。

二、MATLAB简介

软件的功能特点:

在科学研究和工程应用中,往往要进行大量的数学计算,其中包括矩阵运算。这些运算一般来说难以用手工精确和快捷地进

行,而要借助计算机编制相应的程序做近似计算。

Matlab就解决这些问题。Matlab语言有如下特点:1.编程效率高

它是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且比Basic、Fortran和C等语言更加接近我们书写计算公式的思维方式,用Matlab编写程序犹如在演算纸上排列出公式与求解问题。因此,Matlab语言也可通俗地称为演算纸式科学算法语言由于它编写简单,所以编程效率高,易学易懂。

2.用户使用方便

Matlab语言是一种解释执行的语言,它灵活、方便,其调试

程序手段丰富,调试速度快,需要学习时间少。人们用任何一种语言编写程序和调试程序一般都要经过四个步骤:编辑、编译、连接以及执行和调试。各个步骤之间是顺序关系,编程的过程就是在它们之间作瀑布型的循环。具体地说,Matlab运行时,如直接在命令行输入Mailab语句(命令),包括调用M文件的语句,每输入一条语句,就立即对其进行处理,完成绩译、连接和运行的全过程。又如,将Matlab源程序编辑为M文件,由于Mat1ab 磁盘文件也是M文件,所以编辑后的源文件就可直接运行,而不需进行编译和连接。在运行M文件时,如果有错,计算机屏幕上会给出详细的出锗信息,用户经修改后再执行,直到正确为止。所以可以说,Mat1ab语言不仅是一种语言,广义上讲是一种该语言开发系统,即语言调试系统。

3.扩充能力强

高版本的Matlab语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且Matlab的库函数同用户文件在形成上一样,所以用户文件也可作为Matlab的库函数来调用。因而,用户可以根据自己的需要方便地

建立和扩充新的库函数,以便提高Matlab使用效率和扩充它的功能。

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用

C,FORTRAN等语言完相同的事情简捷得多.在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持.可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。

MATLAB的基础是矩阵计算,但是由于他的开放性,并且mathwork也吸收了像maple等软件的优点,使MATLAB成为一个强大的数学软件

三、实验原理

1、卷积的定义:数学中关于两个函数的一种无穷积分运算。

2、涉及的Matlab函数:conv函数:实现信号的卷积运算。

调用格式:w=conv(u,v)计算两个有限长度序列的卷积,

说明:该函数假定两个序列都从零开始。

3、采用把信号进行抽样离散化形成序列的方法,把积分转化

为求和运算,使得问题化为两个序列的卷积和,然后运用

MATLAB软件实现它的运算。

四、程序代码:

function[f,k] = sconv(f1,f2,k1,k2,p)

%计算连续信号卷积积分f(t)=f1(t)*f2(t)

%f:卷积积分f(t)的对应的非零样值向量;

%k:f(t)对应时间向量

%f1:f1(t) 非零样值向量;

%f2:f2(t) 非零样值向量;

%k1:f(1) 对应时间向量

%k2:f(2) 对应时间向量

%p:取样时间间隔

f = conv(f1,f2);

f = f*p;

k0 = k1(1)+k2(1);

k3 = length(f1)+length(f2)-2; k = k0:p:k3*p;

subplot 311;

plot(k1,f1);

title('f1(t)')

xlabel('t')

ylabel('f1(t)')

subplot 312

plot(k2,f2)

title('f2(t)')

xlabel('t')

ylabel('f2(t)')

subplot 313

plot(k,f)

h = get(gca,'position');

h(3) = 2.5*h(3);

set(gca,'position');

title('f(t)=f1(t)*f2(t)'); xlabel('t')

ylabel('f(t)')

上述子程序是求解连续时间信号的卷积。主源程序如下:

p = 0.005;

k1= 0:p:2;

f1 = 0.5*k1;

k2 = k1;

f2=f1;

[f,k]=sconv(f1,f2,k1,k2,p); 六、实验效果图:

七、心得体会

信号与系统的课程设计过程中用到的MATLB软件是以前未曾用过的,一切显的那么的陌生,无从下手,所以我们就从图书馆借来了大量的相关书籍,还有从网上找来了大量的资料,才让我有了点眉目,课程中要求使用的MATLB系统函数CONV 还是有点不懂的,随着我上机操作这些问题也迎刃而解了。此次

课程设计受益匪浅,相信对理解信号会有莫大的帮助.

回顾起此次信号与系统课程设计,至今我仍感慨颇多,的确,从理论到实践,在整整一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学的知识,而且学到了很多课本上没有的东西。通过这次课程设计使我懂得了理论知识与实践相结合是很重要的,只用理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

八、参考文献

1、参考资料:

《信号与系统实验》(PDF文件)

《信号与系统》(第二版)

《信号与系统(第二版)习题全解与实验指导》

《信号与系统——MATLAB综合实验》

东华理工大学软件学院

课程设计评分表

学生姓名:詹振华班级:081132 学号:08113227 课程设计题目:用conv函数求连续信号的卷积运算

实验三 卷积积分与卷积和运算

a=1000; t1=-5:1/a:5; f1=stepfun(t1,0); f2=stepfun(t1,-1/a)-stepfun(t1,1/a); subplot(231); plot(t1,f1); axis([-5,5,0,1.2]); xlabel('时间(t)');ylabel('幅值f1(t)');title('f1'); subplot(232); plot(t1,f2); ylabel('幅值f2(t)'); title('f2'); y=conv(f1,f2); r=2*length(t1)-1; t=-10:1/a:10; subplot(233); plot(t,y); axis([-5,5,0,1.2]); title('f1和f2的卷积'); ylabel('f(t)'); f11=conv(f1,f1);f22=conv(f2,f2); subplot(234); plot(t,f11); title('f1和f1的卷积'); ylabel('f11(t)'); axis([-5,5,0,5000]); subplot(235); plot(t,f22); title('f2和f2的卷积'); ylabel('f22(t)');

s=0.01; k1=0:s:2; k2=k1; f1=3*k1; f2=3*k2; f=conv(f1,f2); f=f*s; k0=k1(1)+k2(1); k3=length(f1)+length(f2)-2; k=k0:s:k3*s; subplot(3,1,1); plot(k1,f1); title('f1(t)'); subplot(3,1,2); plot(k2,f2); title('f2(t)'); subplot(3,1,3); plot(k,f); title('f(t)')

相关文档
最新文档