Matlab课设_matlab课设
Matlab课设由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“matlab课设”。
武汉理工大学《Matlab课程设计》课程设计说明书
目录
摘要.............................................................................................2
一、Matlab运算与应用............................................................3 1.1..........................................................................................3 1.2..........................................................................................3
二、Matlab运算与应用设计题目分析....................................4 2.1..........................................................................................4 2.2..........................................................................................5 2.3..........................................................................................6 2.4..........................................................................................7 2.5........................................................................................13 2.6........................................................................................14 2.7........................................................................................15 2.8........................................................................................17 2.9........................................................................................19 2.10......................................................................................22
三、matlab课程设计心得体会..............................................23 参考文献...................................................................................23
武汉理工大学《Matlab课程设计》课程设计说明书
摘要
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
Matlab和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。Matlab可以经行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
本次课程设计主要通过学习了解Matlab,熟悉Matlab界面、进行简单操作,并运用此款软件完成安排的相关题目。
关键字:Matlab、课程设计、矩阵实验室
武汉理工大学《Matlab课程设计》课程设计说明书
一、Matlab运算与应用
1.1理论分析
Matlab是MathWorks公司的产品,是一个为科学和工程计算而专门设计的高级交互式放的软件包。Matlab环境集成了图示与精确的数值计算,是一个可以完成各种计算和数据处理可视化的、强有力的、易于使用和理解的工具。Matlab已被证明是为解决数学、物理、化学、工程、医药、金融和其他涉及复杂数值计算的应用领域的一个十分灵活的、便于使用的工具,也是数学、数值分析和工程等课程教学的一个优秀的教育工具。这个程序被世界各地高等学院广泛使用,在工业应用中也很流行,Matlab使用于PC到超级计算机以及大多数诸如PC、Macintosb和UNIX等平台。
Matlab中有大量的命令集和可用函数集,也通称为Matlab M文件,这是应用更加容易。因此,在Matlab中求解问题通常比传统编程快得多,由于是采用自然表示法,因而使代码清晰和自释。因为多数M文件是公开的,因此,易于修改这些函数。
Matlab中有一些命令可以用来控制Matlab语句的执行,如条件语句、循环语句和支持用户交互的命令。Matlab是一种高级的程序设计语言,能帮助用户解决矩阵户或其它问题。
1.2归纳与总结
Matlab的主要特点是:
(1)有高性能数值计算的高级算法,特别适合矩阵代数领域;(2)有大量事先定义的数学函数,并具有用户自定义函数的能力;(3)绘图和显示数据,并具有教育、科学和艺术学的图解和可视化的二维、三 维图;
(4)基于HTML的完全帮助系统;
(5)适合个人应用的强有力的面向矩阵/向量的高级程序设计语言;(6)与用其他语言编写的程序结合和输入输出格式化的能力;
武汉理工大学《Matlab课程设计》课程设计说明书
(7)有在多个应用领域解决难题的工具箱。
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。
二、Matlab运算与应用设计题目分析
2.1已知t=linspace(0,2*pi,6),求t的正弦和正弦的绝对值。
2.1.1理论分析
由题目已知分析知,linspace(a,b,n)为线性分割函数,在a与b之间均匀地产生n个点值,行成n维向量。Matlab中求解正弦的函数为sin(),求取绝对值和复数模值的函数为abs()。
2.1.2程序代码
>> t=linspace(0,2*pi,6)%创建线性间隔向量t,范围从0到2pi,元素 个数为6 >> a=cos(t)%对向量t求得余弦向量a >> b=abs(a)%对余弦向量a求绝对值得绝对值向量b 2.1.3运行结果
a =
1.0000 0.3090-0.8090-0.8090 0.3090 1.0000 b =
1.0000 0.3090 0.8090 0.8090 0.3090 1.0000
武汉理工大学《Matlab课程设计》课程设计说明书
2.1.4题目总结
为了方便给大量元素赋值,Matlab提供了一些基本矩阵,Linspace()就是其中的均分向量函数命令,大部分的Matlab函数都适用于做元素群运算,只有专门的几个除外,那就是*、/、、^运算符和sqrtm、expm、logm三个函数。题目中用到的正弦函数sin()和取绝对值函数abs()均可用于元素群运算,也即其自变量都可以是任意阶的矩阵。
2.2绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。
2.2.1理论分析
本题是画函数的曲线图,可以利用plot,ezplot等命令进行绘图。也可以用funtool命令直接绘制函数图象。由于plot要设置自变量的范围,而ezplot不需要设置,所以本题采用ezplot进行画图。
2.2.2程序代码:
syms x;%声明变量
y1=cos(x);%将cos(s)赋值给y1 y2=x^2;% 将x^2赋值给y2 ezplot(y1);%画函数1图 hold on
grid on %保持图形 %画方格
ezplot(y2)%画函数2图
2.2.3运行结果
武汉理工大学《Matlab课程设计》课程设计说明书
图2.2.3 2.2.4题目总结
ezplot功能简介:
EZPLOT即:Easy to use function plotter。它是一个易用的一元函数绘图函数。特别是在绘制含有符号变量的函数的图像时,ezplot要比plot更方便。因为plot绘制图形时要指定自变量的范围,而ezplot无需数据准备[2],直接绘出图形。要将两个函数绘制到同一个图上要使用hold on 命令。
2.3利用for...end循环语句,求 2+4+6…+100 的值。
2.3.1理论分析
for语句作用是按照预先设定的循环步骤重复执行某语句段, 其语法: for 循环控制变量=存储着该变量依次所取值的一个向量。
循环语句块, 本块重复执行的次数由上方向量的长度决定, 每次执行, 循
武汉理工大学《Matlab课程设计》课程设计说明书
环控制变量依次取该向量中的值.end
2.3.2程序代码
sum=0;%赋初值sum为0
for i=2:2:100 %变量i变化范围为2到100,以2步进 sum=sum + i;%累加求和 end %结束for循环
2.3.3运行结果
>> sum sum =
2550 2.3.4题目总结
matlab的for 循环语句有其独有的特点, 它使用一个向量来控制循环, 循环次数由向量的长度来决定, 而每次循环都依次从向量中取值.这使得Matlab循环更灵活多样, 其循环变量取值可以不按照特定的规律;但是另一方面, Matlab 的for循环也有独特的限制, 当次循环中改变循环变量赋值, 不会代入下次循环, 所以除非在其中用break提前退出, Matlab循环的次数是预先定好的.举个例子: for a=1:2:7 , 将循环4次, a的取值依次是1, 3, 5, 7.2.4分析下面每条指令的功能并运行,观察执行结果。
(1)X=0:0.25:3;Y=X.*exp(-X);plot(X,Y),xlabel(‘x’),武汉理工大学《Matlab课程设计》课程设计说明书
ylabel(‘y’),title(‘y=x*exp(-x)’);
(2)A=zeros(3,5)A(:)=-4:5 L=abs(A)>4 islogical(L)X=A(L)
(3)A=[1:5;6:10] pow2(A)
(4)A=zeros(3,2)A(:)=1:6 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)2.4.1程序分析
X=0:0.25:3;%变量x的取值范围为0 ~3,以0.25增加 Y=X.*exp(-X);%函数y=xex的表达式
plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);
%绘制y=xex的图线,横坐标为x,纵坐标为y,标题为
y=x*exp(-x) A=zeros(3,5)%创建一个3*5的零矩阵A A(:)=-4:5 %为矩阵A赋值,得到列向量范围为-4到5,步进为1 L=abs(A)>4 %判断矩阵A的绝对值是否大于4
武汉理工大学《Matlab课程设计》课程设计说明书
islogical(L)%判断L是否为逻辑值
X=A(L)%X为逻辑数组L对应为1的位置的数据为列向量 A=[1:5;6:10] %创建一个2*5的矩阵A,范围为1到10,步进为1 pow2(A)%返回数组X,依次计算A中元素以2为底的幂 A=zeros(3,2)%创建一个3*2的零矩阵 A(:)=1:6 %为矩阵A赋值,范围为1到6,步进为1 A=A*(1+i)%将矩阵A中的每一个元素乘以(1+i)A1=A.' %对A进行数组转置生成矩阵A1 B1=A' %对A进行矩阵转置生成矩阵B1 A=ones(2,3)%创建一个2*3的1矩阵A B=ones(2)%创建一个2*2的1矩阵B C=eye(4)%创建一个4*4的单位矩阵C D=diag(C)%获取单位矩阵C的对角线元素矩阵D E=repmat(C,1,3)%将矩阵C生成为1*3的新矩阵E
2.4.2运行结果
2.4.2.1程序运行结果一
图2.4.2.1
2.4.2.2程序运行结果二
A =
武汉理工大学《Matlab课程设计》课程设计说明书
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A =
-4-1 2 5 8-3 0 3 6 9-2 1 4 7 10
L =
0 0 0 1 1 0 0 0 1 1 0 0 0 1 1
ans = 1
X = 5 6
武汉理工大学《Matlab课程设计》课程设计说明书
8 9 10
2.4.2.3程序运行结果三
>> pow2(A)
ans =
64 128 256 512 1024 2.4.2.4程序运行结果四
>> A1=A.'
A1 =
0 + 2.0000i 0 + 4.0000i 0 + 6.0000i
0 + 8.0000i 0 +10.0000i 0 +12.0000i >> B1=A'
B1 =
04.0000i 08.0000i 0-10.0000i 0-12.0000i 11
武汉理工大学《Matlab课程设计》课程设计说明书
2.4.2.5程序运行结果五
>> A=ones(2,3)A =
1 1 1 1 1 >> B=ones(2)B =
1 1 1 >> C=eye(4)C =
0 0 0
0 1 0 0
0 0 1 0 0 0 0 1 >> D=diag(C)D =
1
武汉理工大学《Matlab课程设计》课程设计说明书
>> E=repmat(C,1,3)E = 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 2.4.3题目总结
对于实数矩阵,矩阵转置和数组矩阵计算结果是一样的,但是对于复数矩阵,数组转置和矩阵转置的计算结果不一致。所以,对于数组转置运算也被称为非共轭转置,矩阵转置运算则被称为共轭矩阵。数组的运算是指数组对应元素之间的运算,也称点运算。
2.5计算多项式p(x)= x3+15x2+8x在x=3和x=0:1:8时的值。
2.5.1理论分析
由题目已知的条件分析可知是运用MATLAB计算多项式。这里运用到的是polyval()命令。通过polyval()命令可以快速的计算出在相应值下的多项式的值。
2.5.2程序代码
x=3;y= x^3+15.*x^2+8.*x 式
%赋初值3给x %写出函数表达
武汉理工大学《Matlab课程设计》课程设计说明书
clear all %清除所有变量 >> syms x;%声明变量x >> y=x^3+15.*x^2+8.*x;%写出函数表达式
>> x=0:1:8;%生成一个0到8的数组,每相邻两数间间隔为1 >> p=[1 15 8];%将函数表达式的系数放在数组P中 >> polyval(p,x)%用polyval函数求得表达式的值
2.5.3运行结果
X=3时
186 X=0:1:8时 y =
2.5.4题目总结
Matlab为用户提供了解决多项式运算的和插值的函数库,ployval()就是其中的多项式求值函数。在表达多项式系数中要把缺少的自变量系数0补充到系数矩阵中。
2.6随机生成一个10000×3的矩阵,并绘制其柱状图
2.6.1理论分析
随机生成矩阵函数可以用rand(M,N),表示随机产生一个M*N的矩阵。柱状绘图函数可以用bar,此函数是在平面内绘制柱状图,如果要绘制立体的,用bar3。
武汉理工大学《Matlab课程设计》课程设计说明书
2.6.2程序代码
arry=rand(10000,3);
%随机生成一个10000*3的矩阵
bar(arry)%bar函数用于绘制柱状图 %画出柱状图
2.6.3运行结果
图2.6.3
2.7利用switch…case编写以下程序:
某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price
武汉理工大学《Matlab课程设计》课程设计说明书
2.7.1理论分析
MATLAB语言为解决多分支判断选择提供了switch-case语句。switch-case语句的一般表达形式为: switch〈选择判断量〉 Case 选择判断值1 选择判断语句1 case 选择判断值2 选择判断语句2 …… otherwise 判断执行语句
2.7.2程序代码
price = input();
%输入商品价格
switch fix(price/100)%价格除以100后取整 case {0,1} price=price*1;case {2,3,4} price=price*0.95;case {5,6,7,8,9} price=price*0.9;case others price=price*0.85;end 16
武汉理工大学《Matlab课程设计》课程设计说明书
2.7.3运行结果
2.7.4题目总结
与其他的程序设计语言的switch-case语句不同的是,在MATLAB语言中,当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断,也就是说在MATLAB语言中,即使有多条case判断语句为真,也只执行所遇到的第一条为真的语句。这样就不必像C语言那样,在每条case语句后加上break语句以防止继续执行后面为真的case条件语句。
2.8编程将表达式
10(s3)s(s-6)(s-16)进行部分分式展开
2.8.1理论分析
计算模型
10(s3)s(s-6)(s-16)=k1sk2s6k3s16
武汉理工大学《Matlab课程设计》课程设计说明书
k110(s3)(s6)(s16)10(s3)s(s16)10(s3)s(s6),s=0;k2,s=6;k3,s=16。
2.8.2程序代码
clear,close all;syms x,x=0;syms s;
while x
case 0
%清除所以变量和关闭所有打开的图像框
k1=10*(x+3)/((x-6)*(x-16));
x=6;
case 6
k2=10*(x+3)/(x*(x-16));
x=16;
case 16
k3=10*(x+3)/(x*(x-6));
x=20;end end
y=k1/s+k2/(s-6)+k3/(s-16);
%将计算出的k1、k2、k3带入表达式
武汉理工大学《Matlab课程设计》课程设计说明书
2.8.3运行结果
2.8.4题目总结
本题主要在于数学运算模型建立和计算表达式的书写,利用while…end语句对其
进行三次循环条件判断并计算三个常数,通过switch…end语句分别给出三个常数的计算表达式,最后再将计算出的三个常数带入到
10(s3)s(s-6)(s-16)=
k1sk2s6k3s16中即可。
2.9已知ye出曲线图-1cos(t),其中t的范围是[0 10],计算y的微分和积分并给2.9.1理论分析
已知函数方程和自变量t的变化范围,对于积分,可以利用函数quad()对确定自变量变化范围进行计算,格式如quad('函数名',初值,终值)所示。对于微分,可以利用函数diff()对确定自变量变化范围进行计算。函数图象可用funtool指令得到。
2.9.2程序代码
2.9.2.1积分运算 yt='exp(-1)*cos(t)'
%写出函数表达式
Ic=quad(yt,0,10,1e-8)%用quad函数求积分 Funtool %进行画图 2.9.2.2微分运算
syms t y
武汉理工大学《Matlab课程设计》课程设计说明书
y=(exp(-1)*cos(t)dydt=diff(y,t)%用diff函数求解微分 funtool %进行画图
2.9.3运行结果
2.9.3.1积分运算
2.10.3.1.1 程序运行结果
Ic =
-0.2001
2.10.3.1.2积分图形
图 2.10.3.1.2 20
武汉理工大学《Matlab课程设计》课程设计说明书
2.9.3.2微分运算
2.10.3.2.1程序运行结果
dydt =
-(****sin(t))/***8 2.10.3.2.2微分图形
图2.10.3。2.2
2.9.4题目总结
绘制函数图像时还可以借助Matlab提供的专门绘制函数图象的指令flot(),格式如flot('函数名',[初值,终值])。
武汉理工大学《Matlab课程设计》课程设计说明书
2.10 用fminbnd求解函数f(x)x1/x5在区间(1,10)上的最小值
2.10.1理论分析
用于求某个给定函数的最小值点。使用方法是: x=fminbnd(func,x1,x2)func是函数句柄,然后x1和x2就是函数的区间,得到的结果就是使func取最小值的x值
当然也可以使用[x,fv]=fminbnd(func,x1,x2)的方式,这个时候fv就是函数 的最小值,即有:fv=f(x)2.10.2程序代码
f=@(x)x-1/x+5;%确定函数 [x,fv]=fminbnd(f,1,10)
%求区间1到10中函数的最小值
2.10.3运行结果
x =
1.0001
fv =
5.0001 2.10.4题目总结
本题主要在于fminbnd函数的使用方法,它有两种方式,一种是 x=fminbnd(func,x1,x2);另一种是[x,fv]=fminbnd(func,x1,x2)。运用时随便选哪种都可以,但是如果在某个区间上是单调的,结果就有点意思了,例如clear
>> f=@(x)x^-2*x-3;
武汉理工大学《Matlab课程设计》课程设计说明书
>> [x,fv]=fminbnd(f,2,3)
x = 2.9999
fv =-2.6667 看样子MATLAB是使用了定长小区间的方式计算的,而且结果也是错误的,这不免
让人对这个函数的可靠性产生怀疑…
三、matlab课程设计心得体会
这次Matlab课程设计使用了Matlab2010版本,虽然对它熟悉不过短短一个月左右时间,但也感受和学习到它的功能强大、可扩展性强和智能化程度高。它提供了丰富的操作指令,还有强大而又简单的作图功能。而且软件本身还提供了演示(demo)和求助(help)的命令,让用户更好的学习到软件的功能。此次课程设计学习到的不仅仅是软件运用操作的知识,还学到了更多的学习方法。为了做好这次的课程设计,我查阅了大量的资料,并上网搜索了很多Matlab程序应用的教程和详解,这个过程使我受益匪浅,发现了很多关于Matlab的论坛和学习网站,网上提供了很多关于Matlab学习的方法及其自学的方法,相信这些论坛和网站对于将来继续学习Matlab及其他方面的知识也都有很大的帮助。
虽然在规定的时间内完成了老师所布置的所有题目,但还是觉得不免有些不足,由于时间的限制,对许多Matlab所运用到的只有仅仅只是有所了解,而并没有完全掌握,甚至可以说是只知其然,而不知其所以然。这是我认识到对于Matlab的学习任务还很艰巨,还有许多知识需要去了解,去深研。
参考文献
【1】陈怀身.吴大正.高西全.Matlab及在电子信息课程中的应用[M].电子工业出版社 【2】朱习军.张宾.刘尊年.隋思连.Matlab信号与图像处理中的应用[M].电子工业出版社 【3】罗建军.Matlab教程[M].电子工业出版社.2005
武汉理工大学《Matlab课程设计》课程设计说明书
【4】陈怀琛.Matlab及其在理工课程中的应用指南.2000 【5】张威.Matlab基础与编程入门.西安电子科技大学出版社
【5】 周开立.MATLAB基础及其应用教程.北京:北京大学出版社,2007.【5】 张智星.MAYLAB程序设计及应用.北京:清华大学出版社,2002.【5】 陈怀琛,吴大正,高西全.MATLAB及在电子信息课程中的应用.北京:电子工业出版社,2006.【5】 张琨.MATLAB 2010
从入门到精通.北京:电子工业出版社,2011.24