沈阳理工大学信号与系统课程设计 傅里叶变换的时域卷积和时域微分特性

课程设计任务书

摘 要

本文研究的是傅里叶变换的时域卷积和时域微分特性,傅里叶变换的性质:对称性、线性(叠加性)、奇偶虚实性、尺度变换特性、时移特性、频移特性、微分特性、积分特性、卷积特性(时域和频域);从信号与系统的角度出发,给出了激励信号的具体模型;应用Matlab软件进行仿真,将研究的信号转化成具体的函数形式,在Matlab得到最终变换结果。使用傅里叶变换的方法、卷积的求解方法以及函数的微分等方法研究题目。

关键词: 傅里叶变换;卷积求解;微分;Matlab

目录

1、Matlab介绍.... 1

2、傅里叶变换的有关知识.... 1

2.1傅里叶变换和卷积的内容... 1

2.2傅里叶变换的相关性质... 2

3、用Matlab实现傅里叶变换时域卷积和微分特性的验证.... 3

4、总结.... 8

5、参考文献.... 9


1、Matlab介绍

MATLAB作为一种功能强大的工程软件,其重要功能包括数值处理、程序设计、可视化显示、图形用户界面和与外部软件的融合应用等方面。  MATLAB软件由美国Math Works公司于1984年推出,经过不断的发展和完善,如今己成为覆盖多个学科的国际公认的最优秀的数值计算仿真软件。MATLAB具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可在MATLAB中实现。作为一个跨平台的软件,MATLAB已推出Unix、Windows、Linux和Mac等十多种操作系统下的版本,大大方便了在不同操作系统平台下的研究工作。

 MATLAB软件具有很强的开放性和适应性。在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox),目前己经推出了图象处理工具箱、信号处理工具箱、小波工具箱、神经网络工具箱以及通信工具箱等多个学科的专用工具箱,极大地方便了不同学科的研究工作。国内已有越来越多的科研和技术人员认识到MATLAB的强大作用,并在不同的领域内使用MATLAB来快速实现科研构想和提高工作效率。

 MATLAB提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。这些函数按其功能可分为:图像显示;图像文件I/O;图像算术运算;几何变换;图像登记;像素值与统计;图像分析;图像增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理;灰度与二值图像的形态学运算;结构元素创建与处理;基于边缘的处理;色彩映射表操作;色彩空间变换;图像类型与类型转换。

2、傅里叶变换的有关知识

2.1傅里叶变换和卷积的内容

傅里叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可作为信号的成分,比如正弦波、方波、锯齿波等,傅里叶变换用正弦波作为信号的成分。

傅里叶变换:f(t)是t的周期函数,如果t满足狄里赫莱条件:在一个周期内具有有限个间断点,且在这些间断点上,函数是有限值;在一个周期内具有有限个极值点;绝对可积,则有下图①式成立,称为积分运算f(t)的傅里叶变换;

②式的积分运算叫做F(ω)的傅里叶逆变换,F(ω)叫做f(t)的像函数,f(t)叫做

F(ω)的像原函数,F(ω)是f(t)的像,f(t)是F(ω)原像。

①傅里叶变换

203fb80e7bec54e78829ef3dbb389b504ec26ac8

②傅里叶逆变换

3ac79f3df8dcd100bb000d02708b4710b9122f70

卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列x(n)和h(n),则卷积的结果

( 其中星号*表示卷积)

当时序n=0时,序列h(-i)是h(i)的时序i取反的结果;时序取反使得h(i)以纵轴为中心翻转180度,所以这种相乘后求和的计算法称为卷积和,简称卷积。另外,n是使h(-i)位移的量,不同的n对应不同的卷积结果。

如果卷积的变量是函数x(t)和h(t),则卷积的计算变为

(其中是积分变量,积分也是求和,t是使函数h(-)位移的量,星号*表示卷积)

2.2傅里叶变换的相关性质

(1)微分特性

若函数6d81800a19d8bc3e91ecbf1b838ba61ea9d3457e的傅里叶变换为ac4bd11373f082023bb229ee4afbfbedab641b3a,且其导函数b3b7d0a20cf431ad2e0afae84a36acaf2fdd9803的傅里叶变换存在,则有

即导函数的傅里叶变换等于原函数的傅里叶变换乘以因子。更一般地,若

6d81800a19d8bc3e91ecbf1b838ba61ea9d3457e962bd40735fae6cd2e2513b00eb30f2443a70f49阶导数37d12f2eb9389b50b93d58838435e5dde6116e25的傅里叶变换存在,则

f636afc379310a55d86e6525b64543a98326109c阶导数的傅里叶变换等于原函数的傅里叶变换乘以因子

(2)卷积特性

         1) 时域卷积定理:

若给定两个时间函数,已知

则        

          2)频域卷积定理:

类似于时域卷积定理,由频域卷积定理可知,若

则            

其中

3、用Matlab实现傅里叶变换时域卷积和微分特性的验证

一、时域卷积特性的验证:

例1:利用Matlab画出信号,并由实验结果验证傅里叶变换的时域卷积特性。

 

 

程序:

N=256;

t=-2:4/N:2;

f1=heaviside(t)-heaviside(t-1);

subplot(221)

plot(t,f1);

xlabel('t'); 

ylabel('f1(t)');

grid on; 

f=4/N*conv(f1,f1);

n=-4:4/N:4;

subplot(222)

plot(n,f);

xlabel('t'); 

ylabel('f(t)=f1(t)*f1(t)');

grid on;

dt=4/(N-1);

dn=4/(N-1);

M=401; 

w=linspace(-2*pi,2*pi,M);

F1=f1*exp(-j*t'*w)*dt;

subplot(223)

plot(w,F1);

xlabel('w'); 

ylabel('F1(w)');

grid on; 

F=f*exp(-j*n'*w)*dn;

G=F1.*F1; 

subplot(224);

plot(w,F,'r')

hold on 

plot(w,G) 

legend('F(w)','F1(w).F1(w)')

xlabel('w');

ylabel('F(w)');

grid on;

运行结果如图1所示:

例1运行结果图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


图1

根据运行结果可知的图像曲线完全重合,进而验证了傅里叶变换的时域卷积特性。

 

二、时域微分特性的验证:

例2:已知一个三角波信号,求其微分及微分后的傅里叶变换并验证傅里叶微分特性。

 

程序:

r=0.01;

t=-5:r:5; 

f1=heaviside(t+pi)-heaviside(t-pi); 

f2=heaviside(t+pi)-2*heaviside(t)+heaviside(t-pi);

f=pi/2*(sawtooth(t+pi,0.5)+1).*f1;

w1=2*pi*5;

N=200;

k=-N:N;

w=k*w1/N;

F=r*f*exp(-j*t'*w);

F2=r*f2*exp(-j*t'*w);

F3=F2./(j*w);

subplot(222);

plot(t,f2);

set(gca,'box','off')

xlabel('t');

ylabel('df(t)/dt');

subplot(221);

plot(t,f);

set(gca,'box','off')

xlabel('t');

ylabel('f(t)');

subplot(223);

plot(w,F);

set(gca,'box','off')

xlabel('w');

ylabel('F(df(t)/dt)');

subplot(224);

plot(w,F3,'r');

hold on

plot(w,F)

set(gca,'box','off')

xlabel('w');

ylabel('jwF(w)');

运行结果如图2所示:

 

例2运行结果图

图2

根据运行结果可知的图像曲线完全重合,进而验证了傅里叶变换的时域微分特性。

 

 

4、总结

 

通过本次 “信号与系统”课程,对傅里叶时域卷积定理和时域微分特性有了进一步了解,并且掌握MATLAB的应用,对MATLAB 语言在中的推广应用起到促进作用。从而将便多的时间留于对信号与系统的基本分析方法和应用的理解与思考学会应用 MATLAB的数值计算功能,以及对信号与系统的基本分析方法和应用的理解与思考。让我们将课程中的重点、难点及部分课后练习用 MATLAB 进行形象、直观的可视化计算机模拟与仿真实现,从而加深对信号与系统基本原理、方法及应用的理解,以培养自身主动获取知识和独立解决问题的能力,为学习后继专业课打下坚实的基础。

 

 

 

 

 

 

 

 

 

 

 

5、参考文献

[1]郑君里.应启行.杨为理.信号与系统引论[M].北京:高等教育出版社,2009.

[2]罗永生.信号与线性系统分析[M].长沙:国防科技大学出版社,1996

[3]吴大正.信号与系统[M].北京:高等教育出版社,2000.

 

 

第二篇:沈阳理工大学课程设计

沈阳理工大学课程设计专用纸

Noi

沈阳理工大学

沈阳理工大学课程设计

沈阳理工大学课程设计专用纸

Noii

课程设计任务书

沈阳理工大学课程设计

沈阳理工大学

沈阳理工大学课程设计专用纸

Noiii

摘要

会议记录管理系统是基于VC++环境下设计的,以C++程序设计语言设计的控制台程序,实现了会议信息记录,编辑及删除的主要功能。 根据题目需求分析,设计出程序中主要的类及其功能,设计类的数据成员及成员函数,根据功能需求,设计程序流程。

会议管理系统为非常实用的会议记录工具,其可编辑,浏览及删除的特性深受文件记录者的喜爱。通过一开始对数据成员的赋值,及后来主函数中对文件的操作,实现了方便快捷管理会议记录的目的。 最后是系统测试与分析,给出程序运行结果图,并分析运行结果与源文件的异同,及是否具有可操作性。

沈阳理工大学

沈阳理工大学课程设计专用纸

Noiv

目 录

1 题目内容及设计要求 ........................................................ 4

2 总体设计 ............................................................................ 5

2.1 总体功能框图 .............................................................. 5

2.2 类的设计说明 ............................................................ 6

2.3 主要算法流程图 ........................................................ 7

3 程序清单及注释 ................................................................. 8

4 运行结果与分析 ............................................................... 18 5 总结 .................................................. 错误!未定义书签。 6 参考文献 .......................................... 错误!未定义书签。

沈阳理工大学

沈阳理工大学课程设计专用纸

No5

1 题目内容及设计要求

题目 :会议记录管理系统

内容及要求:

定义会议信息类class Conference

会议信息包括:会议编号,会议名称、部门名称、会议地点,会议日期,会议主持人,会议记录人,出席人员,会议摘要。会议信息以二进制形式存储在文件中。 要求能够:

(1) 添加会议记录

(2) 浏览所有会议记录信息

(3) 按不同字段(会议编号,会议名称等)查询会议记录

(4) 修改会议记录

(5) 删除会议记录

本设计中利用时间顺序将会议记录动态有序地存储在内存中,可方便的添加、修改、删除、查看、查询记录,并能手动的将会议记录以二进制的形式存储到文件中,也可从文件中读取信息。

沈阳理工大学

沈阳理工大学课程设计专用纸

No6

2 总体设计

2.1 总体功能框图

沈阳理工大学课程设计

沈阳理工大学

沈阳理工大学课程设计专用纸

No7

2.2 类的设计说明

UML框图

沈阳理工大学课程设计

沈阳理工大学课程设计

沈阳理工大学

沈阳理工大学课程设计专用纸

No8

2.3主要算法流程图

沈阳理工大学课程设计

沈阳理工大学

沈阳理工大学课程设计专用纸

No9

3 程序清单及注释

#include<iostream>

using namespace std;

class Conference //定义会议数据类 {

private:

static int D,C;

int Coyear,Comonth,Coday; //会议日期

long Conumber; //会议编号

char Coname[30]; //会议名称

char Coplace[30]; //会议地点 char Codepartment[30]; //部门名称

char Cocompere[10]; //会议主持人

char Corecorder[10]; //会议记录人

沈阳理工大学

沈阳理工大学课程设计专用纸

No10

char Coattendant[25][10]; //会议出席人员(25人以内)

int number; //会议出席人数

char Cosummary[200]; //会议记录(100字以内)

public:

void Delsummary() //删除会议记录

{

strcpy(Cosummary,"以删除");

}

Conference() //构造函数 {

Coyear=2010;

Comonth=1;

Coday=D++;

Conumber=C++;

strcpy(Coname,"部门全体会议"); strcpy(Coplace,"全新区");

沈阳理工大学

沈阳理工大学课程设计专用纸

No11

strcpy(Codepartment,"市场部门"); strcpy(Cocompere,"小福猪");

strcpy(Corecorder,"小李");

number=5;

strcpy(Cosummary,"全体会议"); }

void addsummary(char*A) //添加会议记录

{

strcat(Cosummary,A);

}

void setsummary(char *B) //修改会议记录

{

strcpy(Cosummary,B);

}

void showsummary() //浏览会议记录信息 {

cout<<"Cosummary:"<<Cosummary<<endl;

沈阳理工大学

沈阳理工大学课程设计专用纸

No12

}

long ShowConumber() //返回会议编号

{

return Conumber;

}

void SetConame(char* a) //修改会议名称 {

strcpy(Coname,a);

}

char *ShowConame() //返回会议名称

{

return Coname;

}

char *ShowCoplace() //返回会议地点

{

return Coplace;

}

沈阳理工大学

沈阳理工大学课程设计专用纸

No13

void SetCorecorder(char* a) //修改会议记录人

{

strcpy(Corecorder,a);

}

char *ShowCorecorder() //返回会议记录人 {

return Corecorder;

}

void Setnumber(long n) //会议出席人数 {

number = n;

}

void setCoattendant(char*a) //修改会议出席人员

{

int i = 0;

for(i;i<number;i++)

{

沈阳理工大学

沈阳理工大学课程设计专用纸

No14

strcpy(Coattendant[i],a); //逐人次输入

}

}

void SetCosummary(char a[20]) //修改会议摘要

{

strcpy(Cosummary,a);

}

};

int Conference::C=100;

int Conference::D=1;

int main()

{

char

A[6][10]={"xiaoli","xiaoji","xiaoyu","xiaoyazi","xiaogou","xiaozhu"};

Conference meet[5];

int choose,n,i,t;

沈阳理工大学

沈阳理工大学课程设计专用纸

No15

char s[200];

char p[200];

cout<<"欢迎进入会议记录管理系统,请选择你要进行的操作"<<endl;

cout<<"1是添加会议记录"<<endl;

cout<<"2是浏览所有会议记录"<<endl;

cout<<"3是根据(会议编号,会议名称)查询会议记录"<<endl;

cout<<"4修改会议记录"<<endl;

cout<<"5删除会议记录"<<endl;

cin>>choose;

do

{

switch(choose)

{

case 1: //输入会议序号,添加会议内容

cout<<"请输入你要添加会议的序号"<<endl;

cin>>n;

沈阳理工大学

沈阳理工大学课程设计专用纸

No16

cout<<"请输入你要添加的会议记录"<<endl;

cin>>s;

meet[n].addsummary(s); //调用添加内容函数

cout<<"会议内容以添加完毕

"<<endl;

break;

case 2: //浏览全部会议的内容

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

{

cout<<"这是第"<<i+1<<"场会议的记录"<<endl;

meet[i].showsummary();

}

break;

case 3: //根据会议名称或则编号查询会议内容 cout<<"1是根据会议名称查询,2是根据会议编号查询"<<endl;

沈阳理工大学

沈阳理工大学课程设计专用纸

No17

cin>>n;

switch(n)

{

case 1:

cout<<"请输入会议名称:"<<endl; cin>>s;

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

if(strcmp(meet[i].ShowConame(),s)==0) {

cout<<"以下是该会议的内容"<<endl;

meet[i].showsummary(); }break;

case 2:

cout<<"请输入会议编号:"<<endl; cin>>t;

cout<<"以下是该会议的内容"<<endl;

meet[t].showsummary(); break;

沈阳理工大学

沈阳理工大学课程设计专用纸

No18

default:cout<<"没有此选项"<<endl; }break;

case 4: //根据会议编号修改会议内容

cout<<"请输入你要修改的会议的编号"<<endl;

cin>>t;

cout<<"请输入你要修改的内

容;"<<endl;

cin>>p;

meet[t].SetCosummary(p);

cout<<"会议内容已经修改"<<endl; break;

case 5: //根据会议编号删除会议内容

cout<<"请输入你要删除的会议的编号"<<endl;

cin>>t;

meet[t].Delsummary();

cout<<"会议内容已经删除"<<endl; break;

沈阳理工大学

沈阳理工大学课程设计专用纸

No19

default:cout<<"没有该选项,请从新输入"<<endl;

}

cout<<"是否继续输入,若是则输入操作编号,否输入0"<<endl;

cin>>choose;

}while(choose);

//根据choose的值决定是否继续执行 cout<<"欢迎使用该系统"<<endl; return 0;

}

沈阳理工大学

沈阳理工大学课程设计专用纸

No20

4 结果与分析

沈阳理工大学课程设计

沈阳理工大学

沈阳理工大学课程设计专用纸 No

沈阳理工大学课程设计

21

沈阳理工大学

沈阳理工大学课程设计专用纸

No22

5 总结

会议记录管理系统课程设计,通过构造会议Conference,对Conference数据成员初始化,在成员函数中操作及在主函数中对数据成员的编辑,修改和删除,来达到会议记录和编辑的目的。

在程序运行过程中,对于数据成员的初始化和赋值的格式把握非常重要,具体的值由实际的情况决定,具有实用性。 通过这次课程设计,我对c++的基础知识和实用技巧多了很多了解,对成员复制和初始化的方法也懂得了很多。同时我也明白了,程序是为人类生活提供方便的,一个实用的程序能够为人类的生活提供很大的便利。

参考资料

(1)

(2)

(3) 李爱华 面向对象程序设计 刘斌 王忠 面向对象程序设计 同学的帮助

沈阳理工大学

沈阳理工大学课程设计专用纸

No23

沈阳理工大学

相关推荐