matlab课设文档格式.docx
《matlab课设文档格式.docx》由会员分享,可在线阅读,更多相关《matlab课设文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
4程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;
5课程设计的心得体会(至少500字);
6参考文献(不少于5篇);
7其它必要内容等。
指导教师签名:
年月日
系主任(或责任教师)签名:
目录
1Matlab概述................................................................................2
1.1Matlab简介..................................................................................2
1.2Matlab的功能...............................................................................3
1.3Matlab的典型应用.........................................................................4
2设计题目:
Matlab运算与应用设计套题二.................................4
3设计内容...............................................................................................5
3.1题一.....................................................................................................................5
3.2题二.....................................................................................................................5
3.3题三.....................................................................................................................7
3.4题四.....................................................................................................................8
3.5题五...................................................................................................................12
3.6题六...................................................................................................................13
3.7题七....................................................................................................................................14
3.8题八....................................................................................................................................15
3.9题九....................................................................................................................................16
3.10题十....................................................................................................................17
4课程设计心得....................................................................................19
5参考文献............................................................................................20
6本科生课程设计成绩评定表............................................................21
1Matlab概述
1.1Matlab简介
Matlab软件由美国MathWorks公司于1984年推出,经过不断的发展和完善,如今己成为覆盖多个学科的国际公认的最优秀的数值计算仿真软件。
Matlab具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可在Matlab中实现。
作为一个跨平台的软件,Matlab已推出Unix、Windows、Linux和Mac等十多种操作系统下的版本,大大方便了在不同操作系统平台下的研究工作。
Matlab软件具有很强的开放性和适应性。
在保持内核不变的情况下,Matlab可以针对不同的应用学科推出相应的工具箱(toolbox),目前己经推出了图象处理工具箱、信号处理工具箱、小波工具箱、神经网络工具箱以及通信工具箱等多个学科的专用工具箱,极大地方便了不同学科的研究工作。
国内已有越来越多的科研和技术人员认识到Matlab的强大作用,并在不同的领域内使用Matlab来快速实现科研构想和提高工作效率。
Matlab提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。
这些函数按其功能可分为:
图像显示;
图像文件I/O;
图像算术运算;
几何变换;
图像登记;
像素值与统计;
图像分析;
图像增强;
线性滤波;
线性二元滤波设计;
图像去模糊;
图像变换;
邻域与块处理;
灰度与二值图像的形态学运算;
结构元素创建与处理;
基于边缘的处理;
色彩映射表操作;
色彩空间变换;
图像类型与类型转换。
1.2Matlab的功能
(1)强大的科学计算机数据处理能力
Matlab是一个包含大量计算算法的集合。
其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++。
在计算要求相同的情况下,使用Matlab的编程工作量会大大减少。
Matlab的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
(2)出色的图形处理功能
图形处理功能Matlab自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的Matlab对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),Matlab同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,Matlab也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的Matlab还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
(3)应用广泛的模块集合工具箱
Matlab对许多专门的领域都开发了功能强大的模块集和工具箱。
一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。
目前,Matlab已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
(4)实用的程序接口和发布平台
新版本的Matlab可以利用Matlab编译器和C/C++数学库以及图形库,将自己的Matlab程序自动转换为独立于Matlab运行的C和C++的代码。
允许用户编写可以和Matlab进行交互的C或C++语言程序。
另外,Matlab网页服务程序还容许在Web应用中使用自己的Matlab数学和图形程序。
Matlab的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。
工具箱是Matlab函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
(5)应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;
在编程方面支持了函数嵌套,有条件中断等;
在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;
在输入输出方面,可以直接向Excel和HDF5进行连接。
1.3Matlab的典型应用
Matlab的应用领域十分广阔,典型的应用举例如下:
(1)数据分析
(2)数值与符号计算;
(3)工程与科学绘图;
(4)控制系统设计;
(5)航天工业;
(6)汽车工业;
(7)生物医学工程;
(8)语音处理;
(9)图像与数字信号处理;
(10)财务、金融分析;
(11)建模、仿真及样机开发;
(12)新算法研究开发;
(13)图形用户界面设计。
3设计内容
3.1题一
1.计算y1=
和y2=
;
分析:
这题中我们要用到的时正弦、余弦函数以及求平方根函数。
正弦和余弦函数中所有角度需用弧度表示。
平方根函数为sqrt(X)。
在commandwindow中输入代码得到的程序结果如图3.1-1所示。
图3.1-1
3.2题二
2.画出衰减震荡曲线
及其他的包络线
t的取值范围是[0,6
].
这道题目需要我们在[0,6π]范围内绘制曲线,查书可知使用plot函数可以在Matlab中画出二维图形。
在Matlab中常用的二维图形绘制及相关操作如下所示。
(1)二维图形绘制plot函数
格式:
plot(x,y)
功能:
输入两个数组的情况。
绘出以x数组中的元素作为横坐标,y数组中的元素作为纵坐标的曲线。
还可以使用plot(x,[y1,y2,….])的命令格式,以x为向量(即横轴),以y=[y1,y2,…]为数据矩阵,且其中的y1,y2,……为横向量还是列向量都可以得出多条基于相同横轴的曲(折)线。
y的个数即为曲线的条数。
此命令可以在同一张图中绘制多条曲线。
色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式
y黄-实线.点<
小于号
m紫:
点线o圆s正方形
c青-.点划线x叉号d菱形
r红--虚线+加号h六角星
g绿*星号p五角星
b蓝v向下三角形
w白^向上三角形
k黑>
大于号
(2)subplot函数
subplot(m,n,p)
将图形窗口分成n×
m个子图形窗口,并选择第p个窗口作为当前的图形窗口,供绘制函数图形使用。
(3)图形标注函数legend
legend(string1,string2,string3,…)
在当前图中添加图例。
string1,string2等等会对应plot函数中自定义的描点类型,生成图例。
(4)注释函数text
text(X,Y,'
注释文本'
)
在二维图形(X,Y)坐标处标注文本注释。
(5)添加坐标轴标志函数xlabel,ylable,zlable
xlabel('
x轴文本'
)||ylable('
y轴文本'
)||zlable('
z轴文本'
给当前的X轴、Y轴、Z轴添加坐标轴的标志
(6)添加图形标题吗命令title
title('
标题名'
在当前坐标系的顶部加一个文本串string,作为该图形的标题。
在分析这些函数的作用后,考虑到要生成两个曲线的图形,所以我选定subplot函数。
程序运行代码如图3.2-1所示,程序运行结果如图3.2-2所示。
图3.2-1
图3.2-2
3.3题三
3.画出
所表示的三维曲面。
x,y的取值范围是[-9,9]。
Matlab为我们提供了很多绘制三维图形的图形。
常用的有mesh函数,plot函数,surf函数。
根据书中讲解,绘制三维曲面需要meshgrid函数生成网格矩阵。
此题中我们应使用surf函数绘制曲面。
它的具体功能及用法如下所示。
格式一:
surf(X,Y,Z,C)
绘制由四个矩阵所指定的带色参数的网状表面图。
视角是由view所指定的。
轴的刻度决定于X,Y,Z的范围或当期对轴的设定;
颜色范围由C决定,或者使用当前的设定。
格式二:
surf(X,Y,Z)
将C设为与Z相等,则颜色与网的高度成正比。
其中plot函数是用来绘制空间曲线,mesh函数是用来绘制三维网线图的。
此题的程序代码如图3.2-1所示,程序运行结果如图3.2-2所示。
3.4题四
4.分析下面每条指令的功能并运行,观察执行结果。
(1)X=0:
0.2:
2;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);
(2)A=zeros(3,4)
A(:
)=-4:
7
L=abs(A)>
3
islogical(L)
X=A(L)
(3)A=[1:
5;
6:
10]
pow2(A)
(4)A=zeros(3,5)
)=1:
15
A=A*(1+i)
A1=A.’;
B1=A’;
(5)A=ones(2,3)
B=ones
(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
(1)该程序的功能是绘制二维曲线Y=X.*exp(-X)的图形。
其中自变量X的取值范围为[0,2],在绘图的时候每隔0.2单位取一个点。
图形的标题为‘y=x*exp(-x)’,横坐标和纵坐标标题文字分别为“x”和“y”。
程序运行的结果如图3.4-1所示。
图3.4-1
(2)A=zeros(3,4)产生一个3×
4的零矩阵;
7使矩阵A中的每个元素按先列再行的顺序依次赋值,从-4到7,每次增加1。
如图3.4-2所示;
图3.4-2
3abs(A)>
3是对矩阵中的每一个元素进行判断,如果当前元素大于3,则L矩阵中对应位置值为1,否则为0;
isLogical(L)返回L矩阵是否为逻辑性的矩阵。
如果L是逻辑性矩阵返回值为1,否则返回值为0;
X=A(L)的作用是将A中的L矩阵对应位置为1的元素提取出来存入X矩阵,即提取A中的绝对值大于3的元素到X矩阵中。
这样X矩阵中的元素就是A中的绝对值大于3的元素。
程序运行结果如图4.1-3所示。
图3.4-3
(3)A=[1:
10]创建一个2×
5的矩阵,第一行元素从1至5依次递增1;
第二行从6至10递增1;
pow2(A)使矩阵A中的每个元素的值都变为原来的2^x,x为矩阵A中的每个元素的值。
程序运行结果如图4.1-4所示。
图3.4-4
(4)A=zeros(3,5);
15;
A=A*(1+i)先创建一个3×
5的矩阵,然后依次赋值1至15,(参照图3.4-2的方式),再将A*(1+i)的值赋给A;
A1=A.’将A转置后赋给A1;
B1=A’先将A转置,后再取其共轭复数将其赋给B1。
程序运行结果截图如图4.1-5所示。
图3.4-5
(5)A=ones(2,3)生成一个2×
3的全1矩阵;
B=ones
(2)生成一个二阶的全1方阵;
C=eye(4)生成一个四阶的单位矩阵;
D=diag(C)取C矩阵主对角线上的元素构成向量D。
E=repmat(C,1,3)将矩阵复制拼接成[CCC]的形式(1×
3),构成新的矩阵E。
程序的运行结果如图4.1-6所示。
图3.4-6
3.5题五
5.计算
在x=0.1与10处的值。
此题要求求多项式在两点的值。
Matlab在多项式求解方面的常用函数有如下一些。
(1)多项式的表示n
在Matlab中,对多项式p(x)=p1*x^n+p2*x^(n-1)+...+pn*x+p(n+1).用其系数的行向量p=[]来表示。
(2)多项式求值函数polyval
y=polyval(p,x)
返回多项式p在x处的值。
其中x可以是复数,也可以使数组(当p为矩阵多项式时,使用polyvalm函数)。
p是行向量,是多项式的系数,p中的最后一个元素对应的是x的0次幂。
(3)向量转换为多项式函数poly2sym
y=poly2sym(p)
将向量p转换为多项式
已经知道了多项式,求某个点的值,所以此题我们要用的是polyval函数。
程序代码及运行结果如图3.5-1所示。
图3.5-1
3.6题六
6.求函数
n=100的值。
根据题目的规律,我发现需要用循环来解决这个问题,考虑到n是不定的,所以计算该数值就需要我们在M文件中编写function,利用循环机结构while语句或者for语句,n的值可以在命令行中输入。
在本题中n=100。
输出时我们可以使用格式输出函数fprintf。
程序流程图如下所示。
假
真
程序代码如图3.6-1所示。
图3.6-1
在命令行窗口输入SumIt(100),得到程序运行结果如图3.6-2所示。
图3.6-2
3.7题七
7.求1000个元素的随机数向量A中大于0.5的元素个数。
第一步,我么可以通过rand函数生成1000个元素的随机向量;
第二步,利用for循环将产生的向量的每一个元素与0.5进行比较,如果大于0.5则将计数变量加一。
这样循环结束时,就可以得到所有大于0.5的元素的个数了。
代码如图3.7-1所示
图3.7-1
鼠标右键单击“CurrentDirectory”中的“design7.m”,然后鼠标左键单击"
Run"
程序的运行效果如图3.7-2所示。
图3.7-2
3.8题八
8.求线性方程组AX=b的根。
由题目条件AX=b可推导得,X等于A的逆矩阵*b。
所以,我们需要用到求逆函数inv。
解题的基本思路为
程序代码及运行结果如图3.8-1所示。
图3.8-1
3.9题九
9.画出y=|1000sin(4x)|+1的y轴为对数图。
Matlab中众多的二维图形绘制函数中的对数坐标轴命令函数有semilogx,semilogy,loglog。
它们的用法和功能如下:
semilogx(…)
在X轴上用常用对数来标定。
使用方法与plot函数类似其中semilogy是在Y轴上用常用对数来标定,loglog容易看出是在X,Y轴上分别采用的常用对数进行标定。
因为需要y轴为对数标定所以在这道题中需要用的是semilogy函数。
程序代码如图3.9-1所示。
图3.9-1
程序运行结果如图3.9-2所示。
图3.9-2
3.10题十
10.用FFT直接计算x=sin(2*pi*40*t)+2cos(2*pi*120*t)+w(t)的功率谱。
fft(FastFourierTransform)的意思为一维快速傅里叶变换函数,其在Matlab中的用法及功能如下所示。
X=fft(x,N)
采用fft算法计算序列向量x的N点的DFT变换,当N为默认值时,fft自动按x的长度计算DFT。
当N为2的整数次幂时,fft按基2算法计算,否则用混合算法。
此题我们采用周期图法的傅里叶变换求取信号的功率谱。
程序设计代码如图3.10-1所示。
图3.10-1
保存该M文件到Untitled.M。
在commandwindow窗口中输入Untitled启动M代码,程序的运行结果截图如图3.10-2所示。
图3