烟台大学。
数学建模暑期培训。陈传军。
1. matlab作为线性系统的一种分析和**工具,是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决工程、科学计算和数学学科中许多问题。
2. matlab建立在向量、数组和矩阵的基础上,使用方便,人机界面直观,输出结果可视化。
3. 矩阵是matlab的核心。
4. matlab的进入与运行方式(两种)
1、变量。matlab中变量的命名规则是:
1)变量名必须是不含空格的单个词;
2)变量名区分大小写;
3)变量名最多不超过19个字符;
4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号。
特殊变量表。
2、数**算符号及标点符号。
1)matlab的每条命令后,若为逗号或无标点符号,则显示命令的结果;若命令后为分号,则禁止显示结果。
2)“%后面所有文字为注释。
3) “表示续行。
3、数学函数。
1、创建简单的数组。
x=[a b c d e f创建包含指定元素的行向量。
x=first:last
创建从first开始,加1计数,到last结束的行向量。
x=first:increment:last
创建从first开始,加increment计数,last结束的行向量。
x=linspace(first,last,n)
创建从first开始,到last结束,有n个元素的行向量。
x=logspace(first,last,n)
创建从first开始,到last结束,有n个元素的对数分隔行向量。
2、 数组元素的访问。
1)访问一个元素: x(i)表示访问数组x的第i个元素。
2)访问一块元素: x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.
3)直接使用元素编址序号。 x([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组。
x(a) x(b) x(c) x(d)].
3、数组的方向。
前面例子中的数组都是一行数列,是行方向分布的。 称之为行向量。 数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示。
产生列向量有两种方法:
直接产生例 c=[1;2;3;4]
转置产生例 b=[1 2 3 4]; c=b’
说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素。
4、数组的运算。
1)标量-数组运算。
数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算。
设:a=[a1,a2,…,an], c=标量。
则:a+c=[a1+c,a2+c,…,an+c]
a.*c=[a1*c,a2*c,…,an*c]
a./c= [a1/c,a2/c,…,an/c](右除)
a.\c= [c/a1,c/a2,…,c/an] (左除)
a.^c= [a1^c,a2^c,…,an^c]
c.^a= [c^a1,c^a2,…,c^an]
2)数组-数组运算。
当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的。
设:a=[a1,a2,…,an], b=[b1,b2,…,bn]
则:a+b= [a1+b1,a2+b2,…,an+bn]
a.*b= [a1*b1,a2*b2,…,an*bn]
a./b= [a1/b1,a2/b2,…,an/bn]
a.\b=[b1/a1,b2/a2,…,bn/an]
a.^b=[a1^b1,a2^b2,…,an^bn]
1、矩阵的建立。
逗号或空格用于分隔某一行的元素,分号用于区分不同的行。 除了分号,在输入矩阵时,按enter键也表示开始一新行。 输入矩阵时,严格要求所有行有相同的列。
例 m=[1 2 3 4 ;5 6 7 8;9 10 11 12]
p=[1 1 1 1
特殊矩阵的建立:
a产生一个空矩阵,当对一项操作无结。
果时,返回空矩阵,空矩阵的大小为零。
b=zeros(m,n) 产生一个m行、n列的零矩阵。
c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵。
d=eye(m,n) 产生一个m行、n列的单位矩阵。
2、矩阵中元素的操作。
1)矩阵a的第r行:a(r,:)
2)矩阵a的第r列:a(:,r)
3)依次提取矩阵a的每一列,将a拉伸为一个列向量:a(:)
4)取矩阵a的第i1~i2行、第j1~j2列构成新矩阵:a(i1:i2, j1:j2)
5)以逆序提取矩阵a的第i1~i2行,构成新矩阵:a(i2:-1:i1,:)
6)以逆序提取矩阵a的第j1~j2列,构成新矩阵:a(:,j2:-1:j1 )
7)删除a的第i1~i2行,构成新矩阵:a(i1:i2,:)
8)删除a的第j1~j2列,构成新矩阵:a(:,j1:j2)=[
9)将矩阵a和b拼接成新矩阵:[a b];[a;b]
3、矩阵的运算。
1)标量-矩阵运算。
同标量-数组运算。
2)矩阵-矩阵运算。
1] 元素对元素的运算,同数组-数组运算。
2]矩阵运算:
矩阵加法:a+b
矩阵乘法:a*b
方阵的行列式:det(a)
方阵的逆:inv(a)
方阵的特征值与特征向量:[v,d]=eig[a]
关系与逻辑运算。
1、关系操作符。
2、逻辑运算符。
要说明m文件的特点,就得从matlab本身说起。matlab实质上是一种解释性语言,就matlab(本身来说,它并不能做任何事情,它就像dos操作系统的一样,本身没有实现功能而只对用户发出的指令起到解释执行的作用。像前面介绍过的命令行式的操作一样,命令先送到matlab系统内解释,再运行得到结果。
这样就给用户提供了最大的方便。用户可以把所要实现的指令罗列编制成文件,再统一送入matlab系统中解释运行,这就是m文件。只不过此文件必须以m为扩展名,matlab系统才能识别。
也就是说,m文件其实是一个像命令集一样的ascii(纯文本)码文件。因此m文件语法简单,调试容易,人机交互性强。用户可以便用任何字处理软件对其进行编写和修改。
正是m文件的这个特点造就了matlab强大的可开发性和可扩展性,mathworks公。
司推出的一系列工具箱就是明证。而正是有了这些工具箱,matlab才能被广泛地应用于信号处理、神经网络、鲁棒控制、系统识别、控制系统、实时工作系统、图形处理、光谱分析、模型**、模糊逻辑、数字信号处理、定点设置、金融管理、小波分析、地图工具、交流通。
信、模型处理、lmi控制、概率统计、样条处理、工程规划、非线性控制设计、qft控制设计、nag等各个领域。对个人用户来说,还可以利用m文件来建造和扩充属于自己的“库”。因此,一个不了解m文件,没有掌握 m文件的matlab使用者不能称其为一个真正的 matlab用户。
由于商用的matlab软件用c/c++语言编写而成。因此,m文件的语法与c语言十分相似。对广大的c语言爱好者来说,m文件的编写是相当容易的。
m文件有两种形式,命令式(script)和函数式(function).两者相同之处在于它们都是以m作为扩展名的文本文件,不进入命令窗口,而是由文本编辑器来创建的外部文本文件。
命令式m文件就是命令行的简单叠加,matlab会自动按顺序执行文件中的命令,与批处理文件类似,在matlab命令窗口直接输入此文件的文件名,matlab可逐一执行在此文件内的所有命令,和在命令窗口中逐行输入这些命令一样。这样就解决了用户在命令窗中运行许多命令的麻烦;还可以避免用户做许多重复性的工作。
函数式m文件主要用以解决参数传递和函数调用的问题,它的第一句以function语句为引导。
另外,值得注意的是,命令式m文件在运行过程中可以调用matlab工作域内所有的数据,而且,所产生的所有变量均为全局变量。也就是说,这些变量一旦生成,就一直保存在工作空间中,直到执行clear 或quit时为止。在函数式m文件中的变量除特别声明外,均为局部变量。
因为 matlab是一种解释性语言,所以即使在某个或某些函数中存在语法错误,但如果没执行到该语句时可能就不会发现该错误,这在一个成功的程序设计中是不能容许的。要查出某目录中所有的m函数语法错误,首先应该用 cd 命令进入该目录,然后运行 pcode * 命令进行伪**转换。因为该命令会将 matlab 函数转换成伪**,而在转换过程中该程序将自动翻译每一条语句,所以一旦发现有语法错误,将会停止翻译,给出错误信息。
改正了该语法错误后,再重新执行 pcode 命令,直到没有错误为止。至少这样会保证目录下所有的程序不含有语法错误。
一个m文件首次被调用时,matlab将首先对该m文件进行语法分析。并把生成的相应内部伪**(p码)存放在内存中。此后当再次调用该m文件时,将直接运行该文件在内存中的p码文件而不会对原码文件重复进行语法分析。
p码文件和原码文件具有相同的文件名,但其扩展名为“.p”,并且其运行速度要高于原码文件,但对于规模不大的文件,用户一般察觉不到这种速度上的优势。p码文件不是只有当m文件被调用时才生成,也可被预先生成。
数学建模暑期培训课件
数学建模暑期培训烟台大学数学建模暑期培训陈传军 2010.7.12 第一部分 matlab 入门 1.matlab 作为线性系统的一种分析和 工具,是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决工程 科学计算和数学学科中许多问题。matlab 建立在向量 数组和矩阵的基础上...
数学建模暑期培训小结
我在大二暑期参加了数学建模培训,培训的这段日子过得很充实,很有意义 经历了很多,也收获了很多。以前在大一时就曾听说过数学建模这一学科,但只是很肤浅的了解,还错误的以为这门学科只是跟数学有关系,只要数学学好了,学好数学建模就轻而易举了。因为自己数学一直很好,对数学建模很感兴趣,也很自信,于是,大二下学...
数学建模暑期培训 校车安排
摘要。本文就学校安排校车接送员工,如何有效的安排车辆及让教师和工作人员尽量满意的问题进行分析研究,建立了校车安排方案的优化模型。在问题一中,我们利用floyd算法求出了最短距离矩阵及区域间的最优路径矩阵,同时,在已有矩阵的基础上我们实现了任意两区域的最优路径查询的功能。在此基础上,我们建立了以两个区...