数学建模与数学实验后勤工程学院数学教研室
MATLAB入门
MATLAB作为线性系统的一种分析和仿真工具,是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决 工程,
科学计算 和 数学学科 中许多问题。
MATLAB建立在 向量,数组 和 矩阵 的基础上,使用方便,人机界面直观,输出结果可视化 。
矩阵 是 MATLAB的核心
MATLAB的进入与运行方式(两种)
MATLAB入门一、变 量 与 函 数二、数 组三,矩 阵四,MATLAB编程五,实 验 作 业
1、变量
MATLAB中变量的 命名规则,
( 1)必须是不含空格的单个词;
( 2)区分大小写;
( 3)最多不超过 19个字符;
( 4)必须以字母打头,之后可以是任意字母、
数字或下划线,不允许使用标点符号。
一、变 量 与 函 数特殊变量 取 值
a n s 用于结果的缺省变量名
pi 圆周率
e p s
计算机的最小数,当和 1 相加就产生一个比
1 大的数
f l o p s 浮点运算数
in f 无穷大,如 1 / 0
N a N 不定量,如 0 / 0
i,j i= j=
1?
n a r g i n 所用函数的输入变量数目
n a r g o u t 所用函数的输出变量数目
r e a l m i n 最小可用正实数
r e a l m a x 最大可用正实数特殊变量表
2、数学运算符号及标点符号
+ 加法运算,适用于两个数或两个同阶矩阵相加,
— 减法运算
* 乘法运算
.* 点乘运算(加深理解)
/ 除法运算(也表示右除)
./ 点除运算(加深理解)
^ 乘幂运算
.^ 点乘幂运算(加深理解)
\ 反斜杠表示左除,
( 1) MATLAB命令后 逗号( 或 无标点符号)、分号 作用:
逗号( 或 无标点符号),显示命令结果;
分号,抑制显示结果。
( 2),%”,注释文字标志,
( 3),,..”:续行标志函 数 名 称 函 数 名 称
s i n ( x ) 正弦函数 a s i n ( x ) 反正弦函数
c o s ( x ) 余弦函数 a c o s ( x ) 反余弦函数
t a n ( x ) 正切函数 a t a n ( x ) 反正切函数
a b s ( x ) 绝对值 m a x ( x ) 最大值
m i n ( x ) 最小值 s u m ( x ) 元素的总和
s q r t ( x ) 开平方 e x p ( x ) 以 e 为底的指数
l o g ( x ) 自然对数
)(l og
10
x
以 10 为底的对数
s i g n ( x ) 符号函数 f i x ( x ) 取整
3、数学函数说明:
内部函数很多,但也有限,有时为研究某一个函数的各种性态,需要为 MATLAB定义新函数,为此必须编写函数文件。
函数文件扩展名,*.M
格式,function 因变量名 =函数名(自变量名)
必须通过具体的运算获得 函数值,并赋给因变量。
4,M文件
M文件建立方法,1,在 Matlab中,点,File->New->M-file
2,在编辑窗口中输入程序内容
3,点,File->Save,存盘,M文件名必须与函数名一致。
注意,Matlab的应用程序也以 M文件保存。
例:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2
function f=fun(x)
f=100*(x(2)-x(1)^2)^2+(1-x(1))^2
1.建立 M文件,fun.m
MATLAB
(fun)
2,可直接使用函数 fun.m
例如:计算 f(1,2),只需在 Matlab命令窗口键入命令:
x=[1,2]
fun(x)
返回
x=logspace(first,last,n)
创建从 10first开始,到 10last结束,n个元素为
10.^linspace(first,last,n) 的对数分隔行向量
1、创建简单的数组二、数 组 MATLAB(shuzu1)
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个元素的行向量
2,数组元素的访问
MATLAB
(shuzu2)
( 3) 直接使用元素编址序号,x([a b c d]) 表示提取数组 x的第 a,b,c,d个元素构成一个新的数组
[x(a),x(b),x(c),x(d)]。
( 2) 访问一块元素,x(a,b,c)表示访问数组 x的从第 a
个元素开始,以步长为 b到第 c个元素(但不超过 c),b可以为负数,b缺损时为 1。
( 1) 访问一个元素,x(i)表示访问数组 x的第 i个元素。
3、数组的方向行向量,数组是一行数列,按行方向分布;
列向量,数组是一行数列,按 l列方向分布。
相同点与不同点:
数组操作和运算方式一样,但结果的显示形式不同。
产生列向量的方法(两种):
直接产生 例 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=c*a=a.*c= c.*a=[a1*c,a2*c,…,an*c]
a/c= a./c= [a1/c,a2/c,…,an/c](右除)
c./a= [c/a1,c/a2,…,c/an](右除)
c/a (错误)
a.\c= c./a= [c/a1,c/a2,…,c/an](左除)
a\c (不定方程)
c\a= [a1/c,a2/c,…,an/c] (左除)
a.^c= [a1^c,a2^c,…,an^c]
c.^a= [c^a1,c^a2,…,c^an]
a^c,c^a(错误)
MATLAB
(shuzu3)
20xy22xy
( 2) 数组 -数组运算两个数组有相同维数时,加、减、乘、除、幂运算可按 元素对元素 方式进行,不同大小或维数的数组不能进行运算。
设,a=[a1,a2,…,an],b=[b1,b2,…,bn]
则,a+b= [a1+b1,a2+b2,…,an+bn]
a.*b= b.*a = [a1*b1,a2*b2,…,an*bn]
a*b(错误)
a./b= b.\a= [a1/b1,a2/b2,…,an/bn]
a.\b= b./a= [b1/a1,b2/a2,…,bn/an]
a/b 相当于 a=Xb 解为一个标量
a\b ( 不定方程 )相当于 aX=b 解为一个矩阵
a.^b=[a1^b1,a2^b2,…,an^bn]
a^b(错误)
MATLAB
(shuzu4)
返回三,矩 阵逗号 或 空格 作用:分隔某一行的元素。
分号 作用:区分不同的行。
Enter键作用之一:输入矩阵时,按 Enter键开始一新行。
注意:输入矩阵时,严格要求所有行有相同的列 。
例 m=[1 2 3 4 ; 5 6 7 8; 9 10 11 12]
p=[1 1 1 1
2 2 2 2
3 3 3 3]
1、矩阵的建立
d=eye(m,n) 产生一个 m行,n列的单位矩阵
d=eye(n) 产生一个 n阶的单位方阵
c=ones(m,n) 产生一个 m行,n列的元素全为 1的矩阵
c=ones(n) 产生一个 n阶元素均为 1的方阵
b=zeros(m,n) 产生一个 m行,n列的零矩阵
b=zeros(n) 产生一个 n阶的零方阵
a=[ ] 产生一个空矩阵,当对一项操作无结果时,
返回空矩阵,空矩阵大小为零。
特殊矩阵建立:
MATLAB
(matrix1)
2、矩阵中元素的操作
MATLAB
(matrix2)
( 1)矩阵 A的第 r行,A( r,:)
( 2)矩阵 A的第 j列,A(:,j)
( 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)依次提取矩阵 A的每一列,将 A拉伸为一列向量,A(:)
( 2)矩阵 -矩阵运算
[1] 元素对元素 的运算,同数组 -数组运算。
3、矩阵运算
( 1)标量 -矩阵运算,同标量 -数组运算
MATLAB
(matrix3)
[2] 矩阵运算:
矩阵加法,A+B
矩阵乘法,A*B
方阵行列式,det( A)
方阵逆,inv( A)
方阵特征值、特征向量,[V,D]=eig[A] 返回关系与逻辑运算
1、关系操作符操作符 说明
< 小于
<= 小于或等于
> 大于
>= 大于或等于
= = 等于 (注意)
~= 不等于 (注意)
操作符 说明


~
与或非
2、逻辑运算符控制流三种决策或控制流结构:
for循环,while循环,if-else-end结构说明:
这些结构经常包含大量的 MATLAB命令,故经常出现在 MATLAB
程序中,而不是直接加在 MATLAB提示符下。
例 对 n=1,2,…,10,求 xn= 的值
10sin
n MATLAB
(forexample)
1,for循环:允许一组命令以固定的和预定的次数重复
for x=array
{commands}
end
for和 end语句之间的命令串 {commands}按数组( array)中的每一列执行一次。每一次迭代中,x被指定为数组的下一列,即在第 n次循环中,x=array(:,n)
while expression
{commands}
end
只要在表达式 (expression)里的所有元素为真,就执行 while和
end语句之间的命令串 {commands}。
2,While循环与 for循环以固定次数求一组命令相反,while循环以不定的次数求一组语句的值。
MATLAB
(whileexample)
例:设银行年利率为 11.25%。将 10000元钱存入银行,
问多长时间会连本带利翻一番?
3,If-Else-End结构
( 1)一个选择的一般形式是:
if expression
{commands}
end
如果在表达式 (expression)里的所有元素为真,
就执行 if和 end语句之间的命令串 {commands}。
MATLAB
(fun1)
)1(),2(,12 11)(
2
ff
xx
xxxf 求设例步骤:
一,建立 M文件 fun1.m 定义函数 f( x)
二、在 Matlab命令窗口输入 fun1(2),fun1(-1),fun1(-1)
( 2)三个或更多的选择的一般形式:
if ( expression1)
{commands1}
elseif ( expression2)
{commands2}
elseif ( expression3)
{commands3}
elseif ……
………………
else
{commands}
end
2
3
x 1 x 1
f ( x ) 2 0 x 1,( 2 ),( 0,5 ),( 1 )
x0
x f f f
x



例 设 求步骤:
一,建立 M文件 fun2.m 定义函数 f( x)
二、在 Matlab命令窗口输入 fun2(2),fun2(0.5),fun2(-1)
MATLAB
(fun2)
返回对以下问题,编写 M文件:
(1)用起泡法对 10个数由小到大排序,即将相邻两个数比较
,将小的调到前头。
(2)有一个 矩阵,编程求出其最大值及其所处的位置。
(3)编程求
(4)一球从 100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第 10次落地时,共经过多少米?第 10
次反弹有多高?
(5)有一函数,写一程序,输入自变量的值,输出函数值。
54?
20
1
!
n
n
yxyxyxf 2s i n),( 2
实验作业返回谢 谢!