中北大学课程设计说明书学生姓名:燕飞宇学号:1405054217学院:信息与通信工程学院专业:信息对抗技术专业题目:Matlab专用周(随数字信号处理课)指导教师:李凯、刘宾、杨志良、李沅2016年11月30日中北大学课程设计任务书2016/2017学年第一学期学院:信息与通信工程学院专业:信息对抗技术学生姓名:燕飞宇学号:1405054217学生姓名:毕广宇学号:1405054235课程设计题目:Matlab课程设计起迄日期:2016年12月5日~2016年12月9日课程设计地点:信息对抗技术专业综合实验室指导教师:李凯、刘宾、杨志良、李沅学科部主任:张丕状下达任务书日期:2016年11月30日课程设计任务书1.设计目的:(1)通过本课程设计的学习,学生将复习所学的数字信号处理知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力;(2)掌握Matlab语言的编程方法,能熟练运用;(3)通过Matlab实践的课程设计,掌握设Matlab数字信号处理系统的思维方法和基本开发过程。2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):一、学习Matlab编程及仿真1、熟悉Matlab的运行环境;2、学会并掌握Matlab图形编程;3、根据所设计系统的需要会合理设定需完成系统的各项参数;4、根据所设计系统的需要,优化程序设计最优系统。二、实践设计要求:1、根据所选题目,设计实现系统的原理框图。2、编写Matlab程序,给出系统不同节点输出波形。3、每人写出设计报告。三、参考题目题目1:语音信号分析通过计算机录制一段语音信号,分析该语音信号。1、分析该信号的频谱特性;2、采用IIR进行降噪;3、根据FIR进行降噪;4、对信号进行断句分割。5、求信号的均值、方差;6、求信号的自相关系数;7、求信号的窗(1秒、2秒)能量;8、求信号的窗(1秒、2秒)自相关分析9、采用平均幅度差函数(AMDF法)提取求信号的基音周期、谱估计;10、根据数字特征对信号进行断句分割。注:每个同学可以选择1和2、1和3、1和4、5和6、5和7、5和8、5和9、5和10的一组作为题目,8名同学完成该题目。题目2:傅里叶变换设计自己设计傅里叶变换函数(不能使用Matlab函数);题目3:数独游戏设计1、根据数独游戏规则,设计数独判断程序;2、自动生成数独表;3、根据输入给出输出;注:2个同学一组。题目4:Matlab绘图界面设计1、设计GUI界面;2、通过下拉菜单选择绘制正弦、正切信号;3、通过编辑框输入命令,根据命令绘制信号;4、通过按钮在图形中输出标注(标题、各轴名称);注:1个同学一组。题目5:Matlab信号分析界面设计1、设计GUI界面;2、通过按钮输入信号;3、对信号进行频谱分析;4、输出信号的频谱;注:1个同学一组。题目6:Matlab信号滤波分析界面设计1、设计GUI界面;2、通过按钮输入信号;3、对信号进行低通、高通、带通分析(FIR、IIR、巴特沃斯、切比雪夫);4、输出处理信号的结果、频谱;注:每个同学选择一个滤波器,4名同学完成该题目。题目7:Matlab智能信号发生器1、输出方波、矩形波、三角波和正弦波信号;2、输出随时间变化频率的信号;3、输出随时间变化幅值的信号4、输出随时间变化斜率的等幅值的信号;5、输出处理信号的结果、频谱;注:每个同学选择一种信号,4名同学完成该题目。题目8:Matlab方程组求解数值计算设计1、设计GUI界面;2、通过按钮选择计算方法,表格录入数据;3、对录入数据判断是否可算,实现算法如高斯-赛德尔、列主元消去法、高斯消元法等;4、输出计算结果、误差;注:每个同学选择一种算法,4名同学完成该题目。题目9:Matlab插值求解数值计算设计1、设计GUI界面;2、通过按钮选择计算方法,表格录入数据;3、对录入数据判断是否可算,实现算法如三次样条插值、拉格朗日插值、牛顿插值等;4、输出计算结果、误差;注:每个同学选择一种算法,4名同学完成该题目。题目10:Matlab哈弗曼编码设计1、设计GUI界面;2、通过按钮选择计算方法,表格录入数据;3、对录入数据实现算法哈弗曼信源编码;4、输出计算结果、编码效率;注:1名同学完成该题目。题目11:Matlab费诺编码设计1、设计GUI界面;2、通过按钮选择计算方法,表格录入数据;3、对录入数据实现费诺信源编码;4、输出计算结果、编码效率;注:1名同学完成该题目。题目12:Matlab卷积码编码解码设计1、设计GUI界面;2、通过按钮选择计算方法,录入数据;3、对录入数据实现算法卷积码信道编码;4、输出计算结果、编码效率;注:一个同学设计算法、一个同学设计算法分析,2名同学完成该题目。题目13:Matlab文本内容加密解密算法设计1、设计GUI界面输入文本文件内容;2、对文本内容采用字符颠倒的顺序加密;3、密码字典设计、解密算法设计;4、输出结果。注:每个同学选择一种算法,2名同学完成该题目。题目14:Matlab加噪信号发生器1、输出理想信号如方波、矩形波、三角波和正弦波信号(参数可调);2、输出高斯噪声信号(参数可调);3、输出理想信号与噪声信号叠加后信号4、输出处理信号的结果、计算信噪比;注:每个同学选择一种信号,5名同学完成该题目。题目15:Matlab信号参数计算1、编写一个长度为100的随机信号,信号在区间[-5,5]中均匀、泊松、正态分布;2、测量该序列的均值,方差,最大值,最小值;3、计算其相关函数。注:每个同学选择一种信号,2名同学完成该题目。题目16:基于蒙特卡罗模拟方法的信号分析1、随机产生信号,信号在区间[-5,5]中泊松、正态、分布;2、设计蒙特卡罗函数;3、采用蒙特卡罗模拟方法对设计的信号进行分析;4、并输出结果;注:每个同学选择一种分布信号,3名同学完成该题目。题目17:Matlab信号分解1、编写一个由3不同特征组成信号(相位、频率、幅度);2、对信号叠加白噪声;3、分析信号的频谱、功率谱;4、测量该序列的均值,方差,最大值,最小值;5、设计滤波器,分解3个信号。注:1名同学完成该题目。题目18:Matlab信号参数分析1、设计指数、瑞利、韦泊分布的信号;2、设计3个频率组合的信号;3、叠加上述信号;4、分析上述信号的频谱。注:1名同学完成该题目。题目19:Matlab动态移动小球绘图1、设计三块磁铁构成的磁力线图;2、设计一个红色小球沿磁力线移动;3、通过键盘控制小球移动的速度;4、通过鼠标滚轮控制小球在不同的磁力线移动。注:每名同学选择上述题目中的1个,4名同学完成该题目。题目20:Matlab动态绘图1、设计不同频率组成的信号;2、分析信号的频谱;3、动态绘制信号;4、输出信号的分析结果。注:1名同学完成该题目。3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:(1)要求设计组的每个成员都要了解设计的要求和整体思路;(2)每个题目小组的同学各完成一份设计说明书,突出各自的工作内容;(3)要求有正确的运行结果及结果分析。课程设计任务书4.主要参考文献:谭浩强.《C程序设计(第二版)》.清华大学出版社.1999年12月袁志祥.《数据结构(c语言版)例题详解与课程设计指导》第二版.中国科学技术大学出版社出版谭浩强.《C语言程序设计题解与上机指导》.清华大学出版社.2000年11月陈朔鹰,陈英主.《C语言程序设计习题集(第二版)》.人民邮电出版社.2003年2月田淑清.《C语言程序设计辅导与习题集》.中国铁道出版社.2000年1月王明泉.《信号与系统》.科学出版社.2010年6月5.设计成果形式及要求:每个子题目小组提供详细的设计说明书一份设计说明书中包含:1、关键词解释,设计方案基本原理;2、软件框图;3、调试过程、设计结果、设计分析;4、附录软件源代码6.工作计划及进度:2016年12月5日~2016年12月5日:学习Matlab有关编程方法;2016年12月6日~2016年12月8日:在指导教师指导下实现程序设计;2016年12月8日~2016年12月9日:撰写课程设计说明书;2016年12月9日:答辩。学科部主任审查意见:签字:年月日1目录1.设计目的简介................................................12.设计主要方案及理论介绍......................................13.设计主要步骤................................................34.程序源代码..................................................55.运行结果....................................................76.实例验证....................................................87.设计评述....................................................138.参考文献....................................................1321.设计目的简介数独游戏设计1.根据数独游戏规则,设计数独判断程序;2.自动生成数独表;3.根据输入给出输出;2.设计主要方案及理论介绍算法:递归算法特点递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点:(1)递归就是在过程或函数里调用自身。(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。(3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。(4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。要求递归算法所体现的“重复”一般有三个要求:一是每次调用在规模上都有所缩小(通常是减半);二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);3三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。3.设计主要步骤S=zeros([size(M),0]);end%-------查找第一个0元素-------------firstId=find(M(:)==0,1);%-------矩阵中无0元素-----------ifisempty(firstId)S(:,:,size(S,3)+1)=M;%-------矩阵中有0元素-----------4else%--------查找该元素在矩阵中的位置------------[i,j]=ind2sub([9,9],firstId);%--------填充第一个0元素--------------------fork=1:9%loopthroughall9possibilities%--------寻找该0元素所在的3*3矩阵----------ii=(ceil(i/3)-1)*3+1;jj=(ceil(j/3)-1)*3+1;mm=M(ii:ii+2,jj:jj+2);%--------判断该行,该列,该3*3矩阵中是否存在元素k--------ifsum(M(i,:)==k)==0&&sum(M(:,j)==k)==0&&sum(mm(:)==k)==0%--------将k填入第一个0元素-------M(i,j)=k;%--------%填完这个数后就在此基础上填写第二个0元素--------S=sodoku(M,S);endendEnd5流程图64.程序源代码functio