信号与系统_课程设计_卷积

时间:2024.4.20

信号与系统

课程设计报告

学院  电气与电子工程学院

班级  电气1004    

学号  U201011867

姓名  彭鸿昌

一 设计题目

  循环卷积和离散卷积的计算机计算

二 设计目标

设有两离散序列,则两序列的循环卷积和离散卷积分别为:

画出计算此两卷积的程序框图,并用C语言编写计算程序,计算出结果。

用C语言编程,分析计算结果。

三 设计原理

   在泛函分析中,卷积(卷积)、旋积或摺积(英语:Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表徵函数f 与经过翻转和平移与g 的重叠部分的累积。如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广。

 卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

1 离散卷积

信号与线性系统中,定义x[n],v[n],其卷积为  计算离散卷积时,首先将x[n],v[n]中的离散时间序号n改为i,得到信号x[i],v[i],下一步确定v[n-i]和乘积x[i]v[n-i]。信号v[n-i]是信号v[i]的反折和平移,通过对x[i]v[n-i]中的i求和即可计算出来,式中i取一定范围的的整数。

计算离散卷积时需要用户输入x[n]和v[m]的值,这样便可以得到所要求的离散卷积的值。

2 循环卷积

循环卷积比起线性卷积,在运算速度上有很大的优越性,它可以采用快速傅里叶变换(FFT)技术,若能利用循环卷积求线性卷积,会带来很大的方便。一般情况下,n≧N时x[n]*v[n]并不等于零,x[n]*v[n]的N点DFT和这些值不一致。因此,有必要定义一种卷积运算,使得n=0,1,…,N-1之外的卷积信号x[n]*v[n]等于零,这就引出循环卷积的概念。离散卷积和循环卷积之间的唯一区别是:用折叠位移(模N)信号代替了离散卷积式中的折叠位移信号。

对于循环卷积来说,不仅要知道这两组数而且要确定N值。

四 程序流程图

1 离散卷积流程图

2 循环卷积流程图

程序代码

1 离散卷积代码

#include <iostream>

using namespace std;

int main()

{

    int n,m,k,q;

       n=m=k=q=0;

    double x[100],v[100],y[200];

       cout<<"离散卷积y\n";

       cout<<"输入x[n]的长度\n";

       cin>>n;

       cout<<"输入v[m]的长度\n";

       cin>>m;

       cout<<"输入x[n]\n";

       for(k=0;k<=n-1;k++)

              cin>>x[k];

       cout<<"输入v[m]\n";

       for(k=0;k<=m-1;k++)

              cin>>v[k];

       for(q=0;q<=m+n-2;q++)

              for(k=0;k<=n-1;k++)

                     if((q-k)>=0)

                            y[q]=x[k]*v[q-k]+y[q];

       cout<<"离散卷积y[n]为\n";

       for(q=0;q<=m+n-2;q++)

    cout<<"y["<<q<<"]="<<y[q]<<"\n";

       cout<<"其余值均为0\n";

    return 0;

}

2 循环卷积代码

#include <iostream>

using namespace std;

int main()

{

    int i,j;

       i=j=0;

       int t;

    double x[100],v[100],y[200];

       cout<<"循环卷积y\n";

       cout<<"输入N的值\n";

       cin>>t;

       cout<<"输入x[n]\n";

       for(i=0;i<=t-1;i++)

              cin>>x[i];

       cout<<"输入v[m]\n";

       for(i=0;i<=t-1;i++)

              cin>>v[i];

       for(j=0;j<=t-1;j++)

              for(i=0;i<=t-1;i++)

                     if((j-i)>=0)

                            y[j]=x[i]*v[j-i]+y[j];

                     else if((j-i)<0)

                            y[j]=x[i]*v[j-i+t]+y[j];

       cout<<"循环卷积y[n]为\n";

       for(j=0;j<=t-1;j++)

              cout<<"y["<<j<<"]="<<y[j]<<"\n";

    return 0;

}

计算结果与验证

编程软件使用Code::Blocks,编译器为GNU GCC Compiler

1 循环卷积

验证循环卷积

     =x[0]v[0]+x[1]v[2]+x[2]v[1]=11, n=0

y[n]=x[n] ③v[n]     =x[0]v[1]+x[1]v[0]+x[2]v[2]=11, n=1

                       =x[0]v[2]+x[1]v[1]+x[2]v[0]=14, n=2

验算结果与编程计算结果一致

2 离散卷积

验证离散卷积

1     2      3     4     5

5     4      3     2     1

5     4      3     2     1

      10     8     6     4     2

             15    12    9     6     3

                   20    16    12    8    4

                         25    20    15   10   5

5     14     26    40    55    40    26   14   5

验算结果与编程计算结果一致

体会与感想

在本次课程设计中,通过运用信号与系统、C/C++语言有关知识以及Code::Blocks,wps等软件的应用,对所学的内容有了更为清楚的认识,学会了如何利用图书馆、网络及各种常用软件,了解研究报告的格式。

在这次实践中,虽然在学校理论的学习很多,而且是多方面的,几乎是面面俱到;而在实际工作中,可能会遇到书本上没学到的,又可能是书本上的知识一点都用不上的情况。

总而言之,在课程设计过程中受益匪浅,不仅巩固了以前学习过的知识,还学习到了新知识,实际操作,把理论应用于现实。


第二篇:信号与系统课程设计报告--循环卷积和离散卷积的计算机计算


信号与系统

课程设计报告

学院电气与电子工程学院

班级电气1010

学号  

姓名 

目录

设计概述

   1 设计题目………………………………………………3

2 设计目的………………………………………………3

3 具体步骤………………………………………………3

4 实现方法………………………………………………4

设计目标…………………………………………………4

设计内容

   1 原理学习………………………………………………4

     1.1循环卷积…………………………………………..5

     1.2离散卷积…………………………………………..5

2 程序流程图……………………………………………6

   3 c语言编程与计算

3.1 c语言程序………………………………………...7

3.2计算结果…………………………………………..8

   4 验证计算结果

4.1 验算循环卷积……………………………………9

4.2 验算离散卷积……………………………………9

体会与感想……………………………………………..10

参考文献………………………………………………..10

一 设计概述

设计题目: 循环卷积和离散卷积的计算机计算

设计目的:1、自学C语言以及巩固信号与系统离散卷积与循环卷积的内容;

          2、培养独立思考以及灵活应用所学知识的能力;

          3、培养和掌握正确的设计思想和认真负责的设计态度;

          4、自行检验与调试出精确、简便、实用、可靠的设计方法。

具体步骤:①仔细分析设计题目、目的及内容;

          ②分析离散卷积与循环卷积的特点与异同;

          ③分析计算步骤并画出流程图;

          ④用C语言进行编程并用VC6.0进行演算;

          ⑤自行计算进行验算;

⑥分析结果并分享体会

运用软件:office word2003  VC6.0

实现方法: 通过学习课本及参阅相关书籍以及网络,从理论上分析离散卷积和循环卷积的特点;学习用Word设计程序流程图,C语言编程进行计算,并验证计算结果。

 

二 设计目标

设有两离散序列,则两序列的循环卷积和离散卷积分别为:

画出计算此两卷积的程序框图,并用C语言编写计算程序,计算出结果。

学生用C语言编程,分析计算结果。

三 设计内容

离散卷积和循环卷积的计算机计算

原理学习

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

1.1  循环卷积

循环卷积比起线性卷积,在运算速度上有很大的优越性,它可以采用快速傅里叶变换(FFT)技术,若能利用循环卷积求线性卷积,会带来很大的方便。一般情况下,n≧N时x[n]*v[n]并不等于零,x[n]*v[n]的N点DFT和这些值不一致。因此,有必要定义一种卷积运算,使得n=0,1,…,N-1之外的卷积信号x[n]*v[n]等于零,这就引出循环卷积的概念。离散卷积和循环卷积之间的唯一区别是:用折叠位移(模N)信号代替了离散卷积式中的折叠位移信号。

对于循环卷积来说,不仅要知道这两组数而且要确定N值。

1.2离散卷积

信号与线性系统中,定义x[n],v[n],其卷积为 计算离散卷积时,首先将x[n],v[n]中的离散时间序号n改为i,得到信号x[i],v[i],下一步确定v[n-i]和乘积x[i]v[n-i]。信号v[n-i]是信号v[i]的反折和平移,通过对x[i]v[n-i]中的i求和即可计算出来,式中i取一定范围的的整数。

计算离散卷积时需要用户输入x[n]和v[m]的值,这样便可以得到所要求的离散卷积的值

3  c语言编程与计算

 3.1  c语言程序

#include<stdio.h>

#include<stdlib.h>

void discreat();

void circle(); 

void main()

{int i;

 printf("欢迎使用卷积计算程序\n");

 printf("请进行选择,输入1进行循环卷积计算,输入2进行离散卷积计算:");

scanf("%d",&i);

printf("\n");

while(i!=1&&i!=2)

{printf("输入错误,请重新选择:");

 scanf("%d",&i);

}

if(i=1)

circle();

else

discreat(),i--;

if(i=1)

discreat();

else

circle();

printf("感谢使用\n");

system("pause");

}

void circle()

{

       int i,j;

       i=j=0;

       int t;

       float a[100],b[100],c[200];

       printf("现在计算循环卷积y\n");

       printf("请输入N的值\n");

       scanf("%d",&t);

       printf("请输入x[n]\n");

       for(i=0;i<=t-1;i++)

              scanf("%f",&a[i]);

       printf("请输入v[m]\n");

       for(i=0;i<=t-1;i++)

              scanf("%f",&b[i]);

       for(j=0;j<=t-1;j++)c[j]=0;

           for(j=0;j<=t-1;j++)

              for(i=0;i<=t-1;i++)

                     if((j-i)>=0)

                            c[j]+=a[i]*b[j-i];

                     else if((j-i)<0)

                            c[j]+=a[i]*b[j-i+t];

       printf("循环卷积y[n]为\n");

       for(j=0;j<=t-1;j++)

              printf("y[%d]=%f\n",j,c[j]);

}

void discreat()

{int n,m,k,q;

       n=m=k=q=0;gg

       static float x[100],y[100],z[200];                     

       printf("计算离散卷积y\n");

       printf("请输入x[n]的长度\n");

       scanf("%d",&n);

       printf("请输入v[m]的长度\n");

       scanf("%d",&m);

       printf("请输入x[n]\n");

       for(k=0;k<=n-1;k++)

              scanf("%f",&x[k]);

       printf("请输入v[m]\n");

       for(k=0;k<=m-1;k++)

              scanf("%f",&y[k]);

       for(q=0;q<=m+n-2;q++)

              for(k=0;k<=n-1;k++)

                     if((q-k)>=0)

                            z[q]+=x[k]*y[q-k];

       printf("离散卷积y[n]为\n");

       for(q=0;q<=m+n-2;q++)

              printf("y[%d]=%f\n",q,z[q]);

       printf("其余值均为0\n");    

}

3.2计算结果

4 验证计算结果

 4.1 验算循环卷积

4.2 验算离散卷积

阵列方法:

1     2      3

3     2      1

3     2      1

      6      4

             9

3     8     14

  验算结果与编程计算结果一致。

四 体会与感想

本次课设花了不少心思,主要在细节问题上不能够做到一步到位,所以在检查过程中耗费了不少时间。同时对于C语言的学习,没有做到稳固。所以导致以前学的很多知识都已经忘记,不得不又拾起以前的课本。但至少这一次课设让我温习了以前的知识也懂得了知识需要时时刻刻去温习。免得以前的知识白学了,当然,在成功后还是蛮有成就感的。又是一个自己做的成果,很满足。

五 参考书目

1.Fundamentals of Signals and Systems -Using the Web and MATLAB

Edward W.Kamen Bonnie S.Heck著 科学出版社

2. 中文版office2003实用教程 徐贤军 著 清华大学出版社

3.《c程序设计(第三版)》 谭浩强 著 清华大学出版社

更多相关推荐:
南邮信号与系统课程实验报告

课程实验报告20xx20xx学年第一学期实验名称用Matlab进行信号与系统的时频域分析专业学生姓名班级学号指导教师指导单位日期用Matlab进行信号与系统的时频域分析一实验目的1学会matlab的简单使用2学...

信号与系统课程设计报告

信号与系统课程设计报告基于IIR的有噪声语音信号处理班姓名成绩指导教师日期目录1摘要及关键字22实验目的与具体任务33MATLAB设计与运行结果及分析431基于IIR滤波器的语音信号的处理4311语音信号的采集...

信号与系统课程设计报告

沈阳理工大学课程设计专用纸成绩评定表沈阳理工大学沈阳理工大学课程设计专用纸课程设计任务书2沈阳理工大学沈阳理工大学课程设计专用纸摘要本文研究的是傅里叶变换的对称性和时移特性傅里叶变换的性质有对称性线性叠加性奇偶...

信号与系统课程设计报告

评分信号与系统课程设计学院电信学院班级测控102班姓名苏慧敏学号10034010206指导教师贺婷设计日期20xx61820xx622利用matlab合成音乐一实验目的1熟悉MATLAB的软件和语言指令的使用2...

信号与线性系统课程设计报告

信号与线性系统课程设计报告课题五基于FIR滤波的语音信号处理系统设计班级姓名学号组号及同组人成绩1指导教师日期课题五基于FIR滤波的语音信号处理系统设计摘要MATLAB是由美国mathworks公司发布的主要面...

信号与系统课设报告模版

课程设计报告课程名称信号与系统课程设计指导教师罗倩设计起止日期20xx623至20xx73学院信息与通信工程专业电子信息工程学生姓名班级学号成绩指导老师签字1目录1课程设计目的32课程设计原理33课程设计所用设...

信号与系统课设报告

一课程设计目的信号与系统是一门重要的专业基础课MATLAB作为信号处理强有力的计算和分析工具是电子信息工程技术人员常用的重要工具之一本课程设计基于MATLAB完成信号与系统综合设计实验以提高学生的综合应用知识能...

轨道交通信号系统课程设计报告

城市轨道交通信号系统课程设计课题名称绘制车站信号平面布置图联锁表的编制院系自动控制与机械工程学院专业机械设计制造及其自动化班级20xx级机制六班姓名学号指导老师日期20xx年12月30日20xx年1月9日目录摘...

自激振荡器信号与系统课程设计报告

课程设计报告课程名称信号与系统课程设计指导教师设计起止日期学院信息与通信工程专业电子信息工程学生姓名班级学号成绩指导老师签字I目录1课程设计目的和要求12课程设计原理13课程设计所用设备14课程设计内容和步骤1...

提高题音乐合成信号与系统课程设计报告

课程设计报告课程名称信号与系统课程设计指导教师设计起止日期学院信息与通信工程专业电子信息工程学生姓名班级学号成绩指导老师签字I目录1课程设计目的12课程设计要求错误未定义书签3课程设计任务14课程设计内容错误未...

安徽大学信号与线性系统课程设计报告样式

信号与线性系统课程设计题目作者姓名安徽大学电子信息与工程学院合肥230039yourname摘要设计报告须具备设计题目设计目的和意义理论依据设计原理系统原理框图详细设计步骤设计结果原理图或仿真结果及分析结论参考...

会计信息系统课程设计代码

会计信息系统课程设计一类fy的设计按钮command1上一个的click事件代码skip1ifbofmessagebox已是第一个记录48信息窗口mand1enabledfmand2enabledfskipel...

信号与系统课程设计报告(24篇)