13电气一班 王刚伟 133521051
摘要:通过本学期对MATLAB的学习,让我意识到MATLAB在我们生活中有着十分重要的作用,它强大的数学运算功能以及二维和三维图形的功能为我们的计算提供许多便捷之处,在以后的学习中时常运用MATLAB,定能让我更加深层次的了解MATLAB给我们带来的好处。
本次论文我将以MATLABR2014a为基础简单的介绍MATLAB数值计算,希望通过这次论文我能系统的整理出我在学习中所获和所忽略的地方,并且对于课本中提出的问题能够通过自己的方法来得到解决,最后写出自己的心得与体会。
关键词:矩阵 多项式 元胞数组和结构数组 一.MATLAB简介
MATLAB(Matrix Laboratory,矩阵实验室)是Math Works公司开发的,是当今美国很流行的科学计算软件,其应用方面很广比如在矩阵运算、数值分析运算等,MATLAB而且还提供了一种交互式的高级编程语言—M语言,实现了用户编写自己的算法,它的强大绘图可视功能更是如此简洁使得其广泛的应用于信号与图像处理、通信、系统仿真等诸多领域。MATLAB的扩展部分是工具箱,用于解决某一方面的专门问题的新算法,其涵盖了数据获取、数字信号处理、生物遗传工程等专业领域。整体而言MATLAB具有功能强大,人机界面友好,编程效率高,强大而智能化的作图功能,可扩展性墙以及Slimulink动态仿真功能,从而得到人们的青睐。 二.MATLAB数值计算
数学计算是MATLAB强大计算功能的体现,MATLAB的数学计算分为数值计算和符号计算。其中数值计算不允许使用未定义的变量,而符号计算是指使用未定义的符号变量进行运算。
1.数据类型:整型、浮点型、字符型、逻辑型等15种。 2.矩阵
创建矩阵的方法 (1).直接输入法
例:x=[1 2 3;4 5 6;7 8 9]
x =
1 2 3 4 5 6 7 8 9
注意:只要是赋过值的变量,不管是否在屏幕上显示过,都存储在工作空间中,以后可随时显示或调用。变量名尽可能不要重复,否则会覆盖。 (2)用MATLAB函数创建矩阵
空阵[]----MATLAB允许输入空阵,当一项操作无结果时,返回空阵。 rand----随机矩阵 eye----单位矩阵
zeros----全部元素都为0的矩阵 ones----全部元素都为1的矩阵 diag----产生对角矩阵
也可用linspace函数产生行向量。其调用格式为:linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
例:a=linspace(1,10,10) a =
1 2 3 4 5 6 7 8 9 10
注意:matlab严格区分大小写字母,因此a与A是两个不同的变量。matlab函数名必须 小写。
(3)矩阵的赋值
矩阵的赋值有几种方式:全下标方式、单下标方式和全元素方式。(全元素时,矩阵元素个数必须相等)
例:a=[1 2 3;4 5 6] b=[1 2;3 4;5 6] a(:)=b
a =
1 2 3 4 5 6 b =
1 2 3 4 5 6 a =
1 5 4 3 2 6 (4)矩阵加减运算 规则:
①相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。
②允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作 例:x1=[12 15;22 25;32 35] x2=[1 2;3 4;5 6]
x=x1+x2 x1 =
12 15 22 25 32 35 x2 =
1 2 3 4 5 6 x =
13 17 25 29
37 41
(5)矩阵乘运算 规则:
①A矩阵的列数必须等于B矩阵的行数 ②标量可与任何矩阵相乘 例:a=[1 2;3 4;5 6] b=eye(3,2) c=a.*b
a =
1 2 3 4 5 6 b =
1 0 0 1 0 0 c =
1 0 0 4 0 0
(6)矩阵乘方-----a^n,a^p,p^a a^p-----a自乘p次幂
对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,a是标量a^p使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,a^p则无意义。 例:a=[1 2 3;4 5 6;7 8 9] a^2
a =
1 2 3 4 5 6 7 8 9
ans =
30 36 42 66 81 96 102 126 150
3.多项式运算
MATLAB语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的,即把多项式的各项系数按降幂次序排放成为行向量,如果多项式中缺某幂次项,则用0代替该幂次项的系数。
(1)poly-------产生特征多项式系数向量 ①.特征多项式一定是n+1维的. ②.特征多项式第一个元素一定是1. 例:a=[1 2 3;4 5 6;7 8 0]
p=poly(a) a =
1 2 3 4 5 6 7 8 0 p =
1.0000 -6.0000 -72.0000 -27.0000
(2)roots------求多项式的根 例:a=[1 2 3;4 5 6;7 8 0] p=poly(a)
r=roots(p)
a =
1 2 3 4 5 6 7 8 0 p =
1.0000 -6.0000 -72.0000 -27.0000 r =
12.1229 -5.7345 -0.3884
(3)conv------多项式乘运算(向量卷积)
例:syms x
a(x)=x^2+2*x+3 b(x)=4*(x^2)+5*x+6 c=conv([1 2 3],[4 5 6])
a(x) =
x^2 + 2*x + 3 b(x) =
4*x^2 + 5*x + 6 c =
4 13 28 27 18
(4) 多项式导数或微分
Matlab提供polyder函数计算多项式的导数。 命令格式:polyder(p):求p的导数 Polyder(a,b):求多项式a,b乘积的导数 例:a=[1 2 3 4 5] poly2str(a,'x') b=polyder(a) poly2str(b,'x')
a =
1 2 3 4 5
ans =
x^4 + 2 x^3 + 3 x^2 + 4 x + 5 b =
4 6 6 4
ans =
4 x^3 + 6 x^2 + 6 x + 4
(5) 多项式的积分 例:a=[1 2 3 4 5] poly2str(a,'x') b=polyint(a,8) poly2str(b,'x')
a =
1 2 3 4 5
ans =
x^4 + 2 x^3 + 3 x^2 + 4 x + 5 b =
0.2000 0.5000 1.0000 2.0000 5.0000 8.0000
ans =
0.2 x^5 + 0.5 x^4 + x^3 + 2 x^2 + 5 x + 8 4.元胞数组和结构数组
元胞为任意类型、任何大小的多维数组,其定义需用大括号,元素间用逗号隔开。 (1)元胞数组的创建与显示 ①直接赋值
例:a={[1 2 3 4 5];{'中国';'yunnan'};[1+1*1i,4*1i]} a =
[1x5 double] {2x1 cell } [1x2 double]
②先用cell函数进行预分配,在给元素赋值只是创建一个指定大小的元胞数组,并且默认给元胞数组赋值为空数组。 例:a=cell(2,2) a =
[] []
[] []
(2)使用struct函数创建结构矩阵
例:ps(1)=struct('name','三角形','color','red')
ps(2)=struct('name','正方形','color','white')
ps =
name: '三角形' color: 'red'
ps =
1x2 struct array with fields:
name color 三.学习心得
通过对本章的整理,我发现自己对于诸多方面还是缺少深入的了解,MATLAB在我们生活中发挥着越来越大的作用,我认为自己有必要学习好知识的各个方面,希望在以后的学习中能够广泛的运用自己学到的知识。
因篇幅问题不能全部显示,请点此查看更多更全内容