matlab课程设计报告.docx
- 文档编号:15405601
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:23
- 大小:150.66KB
matlab课程设计报告.docx
《matlab课程设计报告.docx》由会员分享,可在线阅读,更多相关《matlab课程设计报告.docx(23页珍藏版)》请在冰点文库上搜索。
matlab课程设计报告
Matlab应用课程设计任务书
题目:
Matlab应用第3套综合题
初始条件:
(1)提供实验室机房及其Matlab6.5以上版本软件;
(2)《MATLAB教程》学习。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):
(1)选择一本《MATLAB教程》,认真学习该教程的全部内容,包括基本使用方法、数组运算、矩阵运算、数学运算、程序设计、符号计算、图形绘制、GUI设计等内容;
(2)对该套综合题的10道题,进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表)。
(3)对实验结果进行分析和总结;
(4)要求阅读相关参考文献不少于5篇;
(5)根据课程设计有关规范,按时、独立完成课程设计说明书。
时间安排:
(1)布置课程设计任务,查阅资料,学习《MATLAB教程》十周;
(2)进行编程设计一周;
(3)完成课程设计报告书一周;
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
第3套题目:
Matlab应用课程设计
1.算y1=
和y2=
;
2.绘制函数
在
时的曲线。
3.用图形表示离散函数
。
4.分析下面每条指令的功能并运行,观察执行结果。
(1)X=0:
0.5:
6;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);
(2)A=zeros(3,5)
A(:
)=-4:
10
L=abs(A)>4
islogical(L)
X=A(L)
(3)A=[1:
5;6:
10]
B=rand(2,5)
A*B’
(4)A=zeros(3,2)
A(:
)=-1:
4
A=A*(1+i)
A1=A.’;
B1=A’;
(5)A=ones(2,3)
B=eye(3)
C=magic(4)
D=diag(C)
E=repmat(C,1,3)
5.计算
在x=0.1与10处的值。
6.求函数
n=100的值。
7.求1500个元素的随机数向量A中大于0.5的元素个数。
8.用图形表示连续调制波形
运行下面的程序,观察结果,并简单说明。
t1=(0:
11)/11*pi;y1=sin(t1).*sin(9*t1);
t2=(0:
100)/100*pi;y2=sin(t2).*sin(9*t2);
subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图
(1)')
subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图
(2)')
subplot(2,2,3),plot(t1,y1,t1,y1,'r.')
axis([0,pi,-1,1]),title('子图(3)')
subplot(2,2,4),plot(t2,y2)
axis([0,pi,-1,1]),title('子图(4)')
9.计算下列矩阵A的标准正交基
10.有如下数据:
x
1
1.1
1.2
1.3
1.4
y
1.00000
1.23368
1.55271
1.99372
2.61170
利用三次样条插值方法对其进行插值,得到每隔0.05的结果。
目录
1MATLAB概述1
1.1MATLAB简介1
1.2MATLAB的功能1
1.3MATLAB的典型应用1
2设计题目:
Matlab应用第三套综合题2
3设计内容2
3.1题一2
3.2题二2
3.3题三3
3.4题四4
3.5题五9
3.6题六10
3.7题七10
3.8题八11
3.9题九12
3.10题十13
4课程设计心得14
参考文献15
1.MATLAB概述
1.1MATLAB简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其它编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
1.2MATLAB的功能
(1)MATLAB以矩阵作为数据操作的基本单位,但无需预先指定矩阵维数
(2)按照IEEE的数值计算标准进行计算
(3)提供十分丰富的数值计算函数,方便计算,提高效率
(4)MATLAB命令与数学中的符号,公式非常接近,可读性强,容易掌握
(5)MATLAB提供丰富的绘图命令,很方便实现数据的可视化
(6)MATLAB具有程序结构控制,函数调用,数据结构,输入输出,面向对象等程序语言特征,而且简单易学,编程效率高
1.3MATLAB应用
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
MATLAB产品族可以用来进行以下各种工作:
(1)数值分析
(2)数值和符号计算
(3)工程与科学绘图
(4)控制系统的设计与仿真
(5)数字图像处理技术
(6)数字信号处理技术
2.设计题目:
Matlab应用第三套综合题
3.设计内容
3.1计算
和
理论分析:
利用MATLAB的基本函数cos()和sqrt()就可以处理这两个算式。
程序代码如下:
>>20*cos(0.5*pi)/(2+sqrt(3))
ans=
3.2814e-016
>>5*cos(0.4*pi)/(4+sqrt(3))
ans=
0.2696
小结:
要注意乘法要用‘*’而不能用‘·’或者不写。
分母要用括号括起来,而‘π’直接写'pi'就可以了。
这与平时的一些书写习惯有所差别。
Matlab在处理类似的数学算式方面很有优势,以后要多加运用。
3.2绘制函数
在
时的曲线。
理论分析:
利用matlab的绘图功能绘制曲线图,我用的是最基本的plot()函数.
程序代码:
x=0:
0.05:
1;
y=x.*exp(-x);
plot(x,y)
运行结果如图1所示:
图1
小结:
在二维绘图函数中,最重要、最基本的函数就是plot函数。
其可以在二维坐标系中绘制线性图形。
其调用格式为
Plot(x)
Plot(x,y1,x,y2......)
3.3用图形表示离散函数
。
理论分析:
在这道题目中,运用到绝对值函数abs(),坐标方格函数gridon以及上题所用到的绘图函数plot()
程序代码:
n=(0:
12);%产生一组自变量数据
y=1./abs(n-6);%产生相应的函数值
plot(n,y,'rx','MarkerSize',20)%用大x红花标出数据点
Gridon%画坐标方格
运行结果如图2所示:
图2
3.4分析下面每条指令的功能并运行,观察执行结果。
3.4.1题目
X=0:
0.5:
6;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);
理论分析:
X=0:
0.5:
6;表示自变量X的变化范围是0到6,每次自增0.5;Y=X.*exp(-X)表示应变量与自变量之间的函数关系;plot(X,Y)表示用plot函数在二维坐标系里绘制线性函数;xlabel(‘x’),ylabel(‘y’)表示在当前坐标轴上加注x轴,y轴的表示依次为x,y。
而title(‘y=x*exp(-x)’)表示将"y=x*exp(-x)"标注为图形的标题。
或者注释如下:
X=0:
0.5:
6;%长度为13的x轴采样点
Y=X.*exp(-X);%函数表达式
plot(X,Y);%绘制一条曲线,如下所示
xlabel(‘x’);%将水平轴标注为x轴
ylabel(‘y’);%将竖直轴标注为y轴
title(‘y=x.*exp(-x)’);%将函数图形取名为y=x.*exp(-x)
程序代码:
X=0:
0.5:
6;
Y=X.*exp(-X);
plot(X,Y);
xlabel('x');
ylabel('y');
title('y=x.*exp(-x)');
运行结果如图3所示:
图3
3.4.2题目:
A=zeros(3,5)
A(:
)=-4:
10
L=abs(A)>4
islogical(L)
X=A(L)
理论分析:
指令功能如下
A=zeros(3,5)%取0数组A,3行5列
A(:
)=-4:
10%将-4至10的15个数值按列依次给A数组赋值
L=abs(A)>4%判断A中元素的绝对值与4的大小,将结果赋值给L
islogical(L)%将L变为L的逻辑数组
X=A(L)%将逻辑值为1的元素列写出来
程序代码:
A=zeros(3,5)
A(:
)=-4:
10
L=abs(A)>4
islogical(L)
X=A(L)
运行结果如下
A=
00000
00000
00000
A=
-4-1258
-30369
-214710
L=
00011
00011
00011
ans=
1
X=
5
6
7
8
9
10
3.4.3题目:
A=[1:
5;6:
10]
B=rand(2,5)
A*B’
理论分析:
A=[1:
5;6:
10]%输入数组A
B=rand(2,5)%生成一个2行,5列随机数组B
A*B’%矩阵A和B的共轭转置矩阵相乘
程序代码:
A=[1:
5;6:
10]
B=rand(2,5)
A*B'运行结果如下:
A=
12345
678910
B=
0.19340.30280.15090.37840.8537
0.68220.54170.69790.86000.5936
ans=
7.033310.2671
16.428827.1440
3.4.4题目A=zeros(3,2)
A(:
)=-1:
4
A=A*(1+i)
A1=A.’;
B1=A’;
理论分析:
A=zeros(3,2)%取0数组A,3行2列
A(:
)=-1:
4%将-1至4的6个数值按列依次给A数组赋值
A=A*(1+i)%将矩阵A转化为复数矩阵
A1=A.’%将矩阵A转置
B1=A’%将矩阵A共轭转置
程序代码:
A=zeros(3,2)
A(:
)=-1:
4
A=A*(1+i)
A1=A.'
B1=A'
运行结果:
A=
00
00
00
A=
-12
03
14
A=
-1.0000-1.0000i2.0000+2.0000i
03.0000+3.0000i
1.0000+1.0000i4.0000+4.0000i
A1=
-1.0000-1.0000i01.0000+1.0000i
2.0000+2.0000i3.0000+3.0000i4.0000+4.0000i
B1=
-1.0000+1.0000i01.0000-1.0000i
2.0000-2.0000i3.0000-3.0000i4.0000-4.0000i
3.4.5题目A=ones(2,3)
B=eye(3)
C=magic(4)
D=diag(C)
E=repmat(C,1,3)
理论分析:
指令说明如下
A=ones(2,3)%2行3列全1矩阵A
B=eye(3)%3阶单位方阵B
C=magic(4)%生成一个4阶幻方矩阵,并赋值给C
D=diag(C)%提取对角矩阵C
E=repmat(C,1,3)%生成一个包含3个C的复制的大矩阵E
程序代码:
A=ones(2,3)
B=ones
(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
运行结果如下:
A=
111
111
B=
100
010
001
C=
162313
511108
97612
414151
D=
16
11
6
1
E=
162313162313162313
511108511108511108
976129761297612
414151414151414151
3.5计算
在x=0.1与10处的值。
理论分析1:
可以直接输入方程式,然后就可以计算出结果,如下所示。
程序代码:
x=0.1
y=2*x^5+0.1*x^3-10
x=10
y=2*x^5+0.1*x^3-10
运行结果:
x=
0.1000
y=
-9.9999
x=
10
y=
200090
理论分析2:
对于多项式的计算,matlab提供了专用的函数polyval(),通过polyval()函数可以很快的计算出在相应值的下的多项式结果。
程序代码:
p=[200.100-10];
polyval(p,0.1)
polyval(p,10)
运行结果如下:
ans=
-9.9988
ans=
20000
3.6求函数
n=100的值。
理论分析1:
在这道题目中我用了两种方法,这是第一种即编写程序算出结果。
代码如下:
y=0;
n=100;
fork=1:
n
y=y+1/(k^3);
end
y
结果:
y=1.2020
理论分析2:
在matlab中有专门的计算级数和的函数即symsum()函数。
其格式为:
symsum(x,y,a,b)计算级数x的和,其中y为自变量,x为符号表达式,[a,b]为参数y的取值范围。
代码如下:
symsn;
s=1/n^3;
symsum(s,n,1,100)
运行结果
ans=
81473483330743503583074181861672511931518122336172216406894149391331289704097519580221863303145356050828007873151451209887/67781182783092495848656345091844021571734190630914590229332161379950257170828098031102950264769178652556660142954086400000
而
>>81473483330743503583074181861672511931518122336172216406894149391331289704097519580221863303145356050828007873151451209887/67781182783092495848656345091844021571734190630914590229332161379950257170828098031102950264769178652556660142954086400000
ans=
1.2020
小结:
对于级数求和函数symsum()要注意先定义变量,而计算结果一开始是一大串数数字,我以为错了,最后才发现中间还有一个'/'号。
我把结果运算一下,和上面所得结果一样。
3.7求1500个元素的随机数向量A中大于0.5的元素个数。
理论分析:
对于列写随机数需要用到函数rand().得到矩阵后需要用程序控制,有循环语句,选择语句和嵌套循环语句。
程序代码:
A=rand(50,30);
n=0;
fori=1:
50;
forj=1:
30;
ifA(i,j)>0.5,n=n+1;
end,end,end
n
运行结果如下:
n=
755
小结:
在写代码的过程中需要注意‘,’与‘;’之间的区别,而最后三个end与for,for,if三者依次对应,缺一不可,否则得不到最终结果。
3.8用图形表示连续调制波形
运行下面的程序,观察结果,并简单说明。
t1=(0:
11)/11*pi;y1=sin(t1).*sin(9*t1);
t2=(0:
100)/100*pi;y2=sin(t2).*sin(9*t2);
subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图
(1)')
subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图
(2)')
subplot(2,2,3),plot(t1,y1,t1,y1,'r.')
axis([0,pi,-1,1]),title('子图(3)')
subplot(2,2,4),plot(t2,y2)
axis([0,pi,-1,1]),title('子图(4)')
解答:
指令分析
t1=(0:
11)/11*pi;%定义一组自变量y1=sin(t1).*sin(9*t1);%数组的乘法
t2=(0:
100)/100*pi;y2=sin(t2).*sin(9*t2);
subplot(2,2,1),%将窗口分为4个,当前为第一个
plot(t1,y1,'r.'),%将点描绘在坐标轴上
axis([0,pi,-1,1]),%控制x,y轴的数值范围
title('子图
(1)')%显示标题
subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图
(2)')
subplot(2,2,3),plot(t1,y1,t1,y1,'r.')%点少时显示的是折线
axis([0,pi,-1,1]),title('子图(3)')
subplot(2,2,4),plot(t2,y2)%点多时才显示曲线
axis([0,pi,-1,1]),title('子图(4)')
结果如图4所示:
图4
3.9计算下列矩阵A正交阵。
理论分析:
运用orth()函数处理即可
程序代码:
A=[114;225;336]
orth(A)
运行结果如下:
A=
114
225
336
ans=
-0.40800.8166
-0.56330.1268
-0.7185-0.5631
3.10有如下数据:
x
1
1.1
1.2
1.3
1.4
y
1.00000
1.23368
1.55271
1.99372
2.61170
利用三次样条插值方法对其进行插值,得到每隔0.05的结果。
理论分析:
利用三维插值函数即可。
程序代码:
x=[1 1.1 1.2 1.3 1.4];
y=[1.00000 1.23368 1.55271 1.99372 2.61170];
xi=1:
0.05:
1.4;
yi=spline(x,y,xi)
运算结果如下:
yi=
1.00001.10821.23371.38051.55271.75481.99372.27692.6117
4课程设计心得
通过这次课设的学习,我学习到了很多知识。
虽然临近期末考试,但是我还是花了很多时间去准备,从接到任务后就开始去图书馆借书,上网搜相关资料。
从来没有接触过matlab,很早就听说过matlab了,久仰其功能强大,但由于各种原因一直没有安上matlab这个软件所以就一直没有见到其庐山真面目。
得益于这次课设我领略到了matlab的风采,其功能的强大超乎了我的想象,想想以后的学习过程中有了matlab可以处理很多复杂的数学计算。
从图书馆借了书之后我就马不停蹄的看了整本书,虽然有很多地方看不懂,但我还是坚持了下来。
有时候我看一道题目,然后就在matlab中试验一下,这样不但可以加强直观的感受,也让学习变得更加的有趣。
matlab将矩阵运算、数值分析、图形处理以及编程技术等功能有机的结合在一大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
在这次设计当中我用到了很多函数,我想这些函数在以后的学习当中会很大的帮助;也了解到很多的运算法则。
对于矩阵的基本运算,我了解到一下规则:
矩阵的算术运算与普通的算术相同,包括加、减、乘、除,也可以用括号来规定运算的优先次序。
乘法ide定义与普通数不同,相应的除法也不同,有左除(\)和右除(/)两种符号。
检查矩阵阶数的matlab语句是size。
数组运算必须要有相同的阶数,除非其中一个是标量。
数组的乘法运算符号是“.*”表示数组中对应元素之间相乘。
数组的除法运算符号位“./”或“.\”,两者的结果相同。
矩阵与数组的关系运算是指两个元素之间的数值比较。
Matlab提供了6种关系运算,其结果返回“1”或“0”,“1”表示“真”即正确;“0”表示“假”,即不成立。
关系运算符通常用于流程控制中,常与if、while、for、swith等控制命令联合使用。
除了基本的这些应用外,matlab还提供了强大的仿真功能,这就是Simulink,,它是matlab的一个分支,主要用来实现对动态系统的模型化和仿真。
它充分体现了模块化设计和系统级仿真思想,使建模如同搭积木一样简单,目前广泛的用于控制系统、电子系统、生物医学、航空航天以及金融等领域。
我想通过这次课设,让我了解到了matlab对于学习上的帮助,也为以后的学习打下了一定的基础。
参考文献
[1]王亚芳.MATLAB仿真及电子信息应用.人民邮电出版社.2011
[2]胡守信.基于MATLAB的数学实验.人民邮电出版社.2007
[3]曾建军.MATLAB语言与数学建模.电子工业出版社.2005
[4]龚纯.MATLAB语言常用算法程序集.机械工业出版社.2003
[5]龚纯等.精通matlab最优化计算.高等教育出版社.2008
[6]徐瑞,黄兆东.MATLAB科
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 课程设计 报告