Matlab解数独游戏DOC.docx
- 文档编号:5730875
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:20
- 大小:299.08KB
Matlab解数独游戏DOC.docx
《Matlab解数独游戏DOC.docx》由会员分享,可在线阅读,更多相关《Matlab解数独游戏DOC.docx(20页珍藏版)》请在冰豆网上搜索。
Matlab解数独游戏DOC
Matlab解数独游戏(DOC)
中北大学
课程设计说明书
学生姓名:
燕飞宇学号:
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
2.设计主要方案及理论介绍......................................1
3.设计主要步骤................................................3
4.程序源代码..................................................5
5.运行结果....................................................7
6.实例验证....................................................8
7.设计评述....................................................13
8.参考文献....................................................13
1.设计目的简介
数独游戏设计
1.根据数独游戏规则,设计数独判断程序;
2.自动生成数独表;
3.根据输入给出输出;
2.设计主要方案及理论介绍
算法:
递归算法
特点
递归算法是一种直接或者间接地调用自身算法的过程。
在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归算法解决问题的特点:
(1)递归就是在过程或函数里调用自身。
(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。
所以一般不提倡用递归算法设计程序。
(4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。
递归次数过多容易造成栈溢出等。
要求
递归算法所体现的“重复”一般有三个要求:
一是每次调用在规模上都有所缩小(通常是减半);
二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。
3.设计主要步骤
S=zeros([size(M),0]);
end
%-------查找第一个0元素-------------
firstId=find(M(:
)==0,1);
%-------矩阵中无0元素-----------
ifisempty(firstId)
S(:
:
size(S,3)+1)=M;
%-------矩阵中有0元素-----------
else
%--------查找该元素在矩阵中的位置------------
[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);
end
end
End
流程图
4.程序源代码
functionS=sodoku(M,S)
%M=[0,0,1,9,0,0,0,0,8;6,0,0,0,8,5,0,3,0;0,0,7,0,6,0,1,0,0;...
%0,3,4,0,9,0,0,0,0;0,0,0,5,0,4,0,0,0;0,0,0,0,1,0,4,2,0;...
%0,0,5,0,7,0,9,0,0;0,1,0,8,4,0,0,0,7;7,0,0,0,0,9,2,0,0];
%
%S=sodoku(M)
if~exist('S','var')
S=zeros([size(M),0]);
end
firstId=find(M(:
)==0,1);
ifisempty(firstId)
S(:
:
size(S,3)+1)=M;
else
[i,j]=ind2sub([9,9],firstId);
fork=1:
9
ii=(ceil(i/3)-1)*3+1;
jj=(ceil(j/3)-1)*3+1;
mm=M(ii:
ii+2,jj:
jj+2);
ifsum(M(i,:
)==k)==0&&sum(M(:
j)==k)==0&&sum(mm(:
)==k)==0
M(i,j)=k;
S=sodoku(M,S);
end
end
end
5.运行结果
5.1实例验证
6.设计的评述及通过设计的收获体会
通过实验,是我对MATLAB有了一个基础的了解,在学习MATLAB编程中需要很多的参考书,要尽量多的熟悉matlab自带的函数及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数。
这一点对程序非常有帮助,可以使程序简单,运行效率高,可以节省很多时间。
本次课设中用了很多MATLAB自带的函数,使程序变得很简单而有效。
在编程的过程中学习,程序需要什么知识再去补充,编程是一点一点积累的,所以需要做一些随手笔记什么的。
课题需要什么函数,需要什么模块就应该去着重看那个知识点,就应该一步一步学,如果太急于把所有东西都学到,也是不好的,更是实现不了的。
总之,通过这次学习,我了解了一下这个软件总体的功能,以及通过自己编写一些代码也学到了一些用法和知识。
我相信通过不时的积累,我会慢慢的学会使用MATLAB。
7.参考文献
1.《MATLABR2016a完全自学一本通》MATLABR2016a完全自学一本通
作者:
刘浩 编著出版社:
电子工业出版社出版时间:
2016年12月
2.《MATLAB程序设计与应用基础教程(第2版)》MATLAB程序设计与应用基础教程(第2版)作者:
[中国]张岳出版社:
清华大学出版社出版时间:
2016年08月
3.《编程算法新手自学手册》作者:
管西京 等编著出版社:
机械工业出版社出版时间:
2012年01月
编程算法新手自学手册
4.李海涛,邓樱﹒Matlab程序设计教程﹒北京:
高等教育出版社,2002﹒259
5.吴鹏.Matlab高效编程技巧与应用.北京:
北京航天航空大学出版社,2010.259
6.算法竞赛入门经典第2版刘汝佳清华大学出版书籍程序设计入门与提高算法艺术与信息学竞赛教程教材辅导
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 解数 游戏 DOC