MATLAB课程设计报告绝对完整Word文档下载推荐.docx
- 文档编号:19121523
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:16
- 大小:33.11KB
MATLAB课程设计报告绝对完整Word文档下载推荐.docx
《MATLAB课程设计报告绝对完整Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计报告绝对完整Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
(美)穆尔,高会生,刘童娜,李聪聪.MATLAB实用教程(第二版).电子工业出版社,2010.
王正林,刘明.精通MATLAB(升级版).电子工业出版社,2011.
陈杰.MATLAB宝典(第3版).电子工业出版社,2011.
刘保柱,苏彦华,张宏林.MATLAB从入门到精通(修订版).人民邮电出版社,2010.
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
1Matlab的简介1
2课程设计内容4
5
2
3课程设计心得体会1
4参考文献1
1Matlab软件简介
MATLAB产生的历史背景
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB的应用:
利用MATLAB可以进行以下各种工作
数值计算
数值和符号计算
工程和科学绘图
控制系统的设计与仿真
数字图像处理
数字信号处理
通讯系统设计与仿真
财务与金融工程
1.2MATLAB的语言特点和开发环境
MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。
被称为第四代编程语言的MATLAB最大的特点就是简洁开放的程序代码和直观实用的开发环境。
具体地说MATLAB主要有以下特点:
(1)库函数资源丰富
(2)语言精炼,代码灵活
(3)运算符多而灵活
(4)面向对象控制功能优良,使界面编程更方便、自由。
(5)程序设计自由
(6)图形功能强大
(7)程序的兼容性好
(8)源代码开放
(9)形形色色的工具箱
2.课程设计内容
已知t=linspace(0,2*pi,6),求t的正弦和正弦的绝对值。
2.1.1理论分析
该函数linspace()为赋值向量函数,还要用到简单的正弦sin()
和绝对值abs()函数。
程序代码
t=linspace(0,2*pi,6);
%产生6维的从0到2*pi等分行向量
sin(t)%求t的正弦值
abs(sin(t))%求sin(t)的的绝对值
2.1.3程序运行结果
ans=
0
2.1.4总结
在matlab中乘号不能不写,也不能写成‘×
’。
只能写成‘*’。
制函数
在
时的曲线。
2.2.1理论分析:
这是一个简单的函数,但要了解该函数用程序代码书写的正确和规范,以及了解绘制二维曲线的函数。
2.2.2程序代码
x=0:
:
1;
%x轴上以的速度从0递增到1的数组
y=x.*exp(-x);
%y关于x的表达式
plot(x,y)%以x为横坐标y为纵坐标画出二维曲线
2.2.3程序运行结果
2.2.4总结:
在matlab中两数之间应该用‘*’符号,不能省略,而且注意如果是进行向量的运算得用‘.*’运算。
已知a=[1,3,0;
2,0,1;
4,6,5],a1=logical([101]),a2=logical([110]),b=a>
1,求a(a1,a2)和a(b)。
2.3.1理论分析:
注意矩阵的赋值以及各种运算
2.3.2程序代码
a=[1,3,0;
4,6,5];
%定义a的矩阵并赋值
a1=logical([101]);
%a1的逻辑值数组
a2=logical([110]);
%a2的逻辑值数组
b=a>
1;
%a,b的逻辑表达式
a(a1,a2)%求矩阵a的1,3行和1,2列的子矩阵
a(b)%求a中大于1的数
2.3.3程序运行结果
13
46
4
3
6
2.3.4总结
在matlab中矩阵的形式各种各样,还有各种赋值形式,我们要了解矩阵的各种形式以及运算
分析下面每条指令的功能并运行,观察执行结果。
(1)X=0:
3;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);
A=zeros(3,5)
A(:
)=-4:
5
L=abs(A)>
4
islogical(L)
X=A(L)
A=[1:
5;
6:
10]
pow2(A)
A=zeros(3,2)
)=1:
6
A=A*(1+i)
A1=A.’;
B1=A’;
A=ones(2,3)
B=ones
(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
2.4.1理论分析:
该大题是让我们练习编写代码,观察执行结果,根据结果去了解各个函数的功能及用法,所以我们必须熟练了解一些常用函数的用法。
2.4.1.2程序代码
X=0:
%生成数组
%y1的表达式
plot(X,Y),xlabel('
x'
),ylabel('
y'
),title('
y=x*exp(-x)'
);
%标注x,y轴及标题
2.4.1.3程序运行结果
2.4.2.2程序代码
A=zeros(2,5)%生成一个2×
5的全0矩阵
)=-4:
5%将A矩阵赋值
L=abs(A)>
4%将A中绝对值与4比较后的逻辑值矩阵
islogical(L)%求L的逻辑值
X=A(L)%求出L中逻辑值为1的那个元素对应A的值
2.4.2.3程序运行结果
A=
-4-2024
-3-1135
L=
00000
00001
1
X=
2.4.3.2程序代码
A=[1:
10]%生成一个二维数组
pow2(A)%求该数组的每个元素的平方值
2.4.3.3程序运行结果
12345
678910
2481632
641282565121024
2.4.4.2程序代码
A=zeros(3,2)%生成一个3行2列的全0矩阵
6%将A从新赋值
A=A*(1+i)%将A中的每个元素进行运算
A1=A.'
%求A的转置矩阵
B1=A'
%求A的共轭转置矩阵
2.4.4.3程序运行结果
00
14
25
36
++
A1=
+++
B1=
---
2.4.5.2程序代码
A=ones(2,3)%生成一个2×
3的全为1的矩阵
B=ones
(2)%生成一个2×
2的全为1的方阵
C=eye(4)%生成一个4阶单位矩阵
D=diag(C)%取C矩阵中的对角元素作为列向量
E=repmat(C,1,3)%将C矩阵复制为1×
3块的矩阵
2.4.5.3程序运行结果
A=
111
B=
11
C=
1000
0100
0010
0001
D=
E=
100010001000
010001000100
001000100010
000100010001
总结:
在该程序编程题中,有很多函数,要注意他们的用法以及他们之间的联系,比如A(:
)=-4:
5,是给矩阵数组赋值,在之前zeros()是确定A的矩阵形式,所以赋值是应与A数组矩阵有相同多的元素个数,本来原题中是zeros(3,5),但运行时却有错误,是因为zeros(3,5)赋给A,A是3×
5矩阵共有15个元素,而后来赋值时又只赋给-4:
5只有10个元素所以就出错了;
当改成zeros(2,5)就可以了。
还有各种其他函数的功能和用法。
计算
在x=与10处的值。
2.5.1理论分析:
该题是简单的二元方程带值求解问题,只需用matlab编写出该方程的表达式,带值即可求解。
2.5.2程序代码
x=;
%将x初始化为
y=2*x^5+*x^3-10;
y%求当x=时y的值
x=10;
%将x赋值为10
y%求当x=10时y的值
2.5.3程序运行结果
y=
200090
2.5.4总结:
在写出表达式之前一定要定义出表达式中的变量
求函数
n=100的值
2.6.1理论分析:
该题是一道用循环函数编写的数学题
2.6.2程序代码
s=0;
%为s变量赋初值为0
fori=1:
100%循环函数,从1到100
s=s+1/i^3;
%s的累加求和表达式
end
s%求s的值
2.6.3程序运行结果
s=
2.6.4总结:
在这个题目中应该注意s=s+1/i^3的通式的表达,这是一个累加表达式,但是还要注意等比数列的写法。
求1500个元素的随机数向量A中大于的元素个数。
2.7.1理论分析:
该题看起来很简单,其实涉及到了很多方面,产生1500个元素得用的随机函数,依次比较1500个数得用到循环函数,还要看是否大于,所以得用到if函数,再其次就是要用到累加表达式。
2.7.2程序代码
A=rand(1500);
%随机函数产生1500个随机数向量赋给一维数组A
%给s赋初值0
1500%循环语句,从1到1500循环1500次
ifA(i)>
%判断数组A中1500是否大于
s=s+1;
%如果大于,则将s的值加1,累计个数
s%求出s最后的累计值
2.7.3程序运行结果
760
2.7.4总结
要注意随机函数的用法,以及要分析好函数的嵌套,那个rand()是随机函数所以每次产生的数都是不一样的,即每次运行的结果应该是不同的。
应该巧妙运用到for函数与if函数的嵌套。
用图形表示连续调制波形
运行下面的程序,观察结果,并简单说明。
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,'
子图
(2)'
subplot(2,2,3),plot(t1,y1,t1,y1,'
axis([0,pi,-1,1]),title('
子图(3)'
subplot(2,2,4),plot(t2,y2)
子图(4)'
2.8.1理论分析:
这题是用图形表示连续调制函数y=sin(t)sin(9t)的波形,注意比较几个图得到不同。
2.8.2程序代码
t1=(0:
%生成一个0到1/π步距为1/(11*π)的数组
y1=sin(t1).*sin(9*t1);
%y1关于t1的数学表达式
t2=(0:
%生成一个0到1/π步距为1/(100*π)的数组
y2=sin(t2).*sin(9*t2);
%y2关于t2的数学表达式
子图
(1)'
)%指定分成一个图到指定位置,以r的格式画出t1,y1点图形,x轴从0到π,y轴-1到1,标记为子图
(1)
子图
(2)'
)%指定分成一个图到指定位置,以r的格式画出t2,y2点图形,x轴从0到π,y轴-1到1,标记为子图
(2)
)
子图(3)'
)%指定分成一个图到指定位置,以r的格式画出t1,y1连线的折线图形,x轴从0到π,y轴-1到1,标记为子图(3)
子图(4)'
)%指定分成一个图到指定位置,以r的格式画出t2,y2默认的曲线图形,x轴从0到π,y轴-1到1,标记为子图(4)
2.8.4总结:
在这几个图中,子图
(1)描写函数的能力最差,子图(3)也有较大的失真,因为数据太少。
对于离散数据,Plot指令默认处理方法是:
自动地把这些离散点用直线连接,使之成为连续曲线。
Subplot是指定几号子图。
Axis设置平面轴的范围、坐标分割线。
已知方程组
,用矩阵除法来解线性方程组。
2.9.1理论分析:
本题是运用矩阵法来求解线性方程组,在matlab中有很简单实用的方法求解线性方程组
2.9.2程序代码
A=sym([3,-1,2;
-5,1,3;
1,-1,4]);
%将方程组的各个元素的系数定义为符号数组
b=sym([9;
8]);
%将方程组等号后的值定义为符号列向量
X=A\b%解出方程组
2.9.4总结:
将各个方程组的各个元素的的系数赋给A,用到方程组的符号解,矩阵计算是求解线性方程组最简便有效的方法。
用sym()符号函数,注意b要用sym(9;
5;
8),不能用sym(9,5,8)。
已知
,其中t的范围是[010],计算y的微分和积分并给出曲线图。
2.10.1理论分析:
这是一个求积分和微分的题,以及也涉及到画图函数。
有各种不同的画图函数,注意选择方便的。
2.10.2程序代码以及结果:
symst,y=exp(-1)*cos(t);
%定义符号变量
df=diff(y,'
t'
)%将符号t视作变量求y对t的微分
jf=int(y,t)%将符号t作为变量求y对t的积分
subplot(2,1,1),ezplot(df,[0,10])%在分成后的指定地方绘制微分在0到10之间的曲线图
subplot(2,1,2),ezplot(jf,[0,10])%在分成后的指定地方绘制积分在0到10之间的曲线图
2.10.3程序运行结果
2.10.4总结
要了解积分和微分函数的运用,该题用到了符号积分和符号微分,对ezplot()画图函数的运用;
3心得体会
通过这次MATLAB的学习,我对MATLAB有了一个基础的认识,matlab是一个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。
它集图示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂数值计算的领域得到了广泛应用。
MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程的特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂程序(M文件)后再一起运行。
在这短短的一周内从开始的一头雾水,到自己看书学习,到同学讨论,再进行整个题目的理论分析和计算,参考课程上的代码,写出自己的代码。
我们也明白了学无止尽的道理,在我们所查的很多参考书中,很多知识是我们从没有接触过的,我们对它的了解还仅限于皮毛,对它的很多功能以及函数还不是很了解,所以在这个学习的过程中我们穿越在知识的海洋中,一点一点吸取着它的知识。
在MATLAB编程中需要很多的参考书,要尽量多的熟悉matlab自带的函数及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数。
这一点对程序非常有帮助,可以使程序简单,运行效率高,可以节省很多时间。
本次课设中用了很多MATLAB自带的函数,使程序变得很简单。
把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充,编程是一点一点积累的,所以你要需做一些随手笔记什么的。
在编写程序代码时,需要什么函数,需要什么模块就应该去着重看那个知识点,不要一步登天,一步一步学,如果太急于把所有东西都学到,也是不好的,更是实现不了的。
所以那时一天一天积累的,慢慢地学通这个软件。
总之,通过这次学习,我了解了一下这个软件总体的功能,以及通过自己编写一些代码也学到了一些用法和知识。
更了解到了,我们还有好多东西去学,学无止尽。
4参考文献
[1](美)穆尔,高会生,刘童娜,李聪聪.MATLAB实用教程(第二版)[M].北京:
电子工业出版社,2010.
[2]王正林,刘明.精通MATLAB(升级版)[M].北京:
电子工业出版社,2011.
[3]陈杰.MATLAB宝典(第3版)[M].北京:
[4]刘保柱,苏彦华,张宏林.MATLAB从入门到精通(修订版)[M].人民邮电出版社,2010.
[5]张德丰.MATLAB在电子信息工程中的应用[M].北京:
电子工业出版社,2009.
本科生课程设计成绩评定表
姓名
欧阳雪
性别
女
专业、班级
信息工程学院电子信息工程1006班
Matlab应用课程设计——Matlab运算与应用设计4
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 课程设计 报告 绝对 完整