第一章 MATLAB矩阵运算与数组运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a=[-4.5,5,9,7,-2.8,3.5,9.5,5.4,7.3]; min(a),[m,im]=min(a),[M,iM]=max(a),[ra,ir]=sort(a) 输出: ans=
-4.5000 m=
-4.5000
im= 1
M= 9.5000
iM= 6
ra= -4.5000 9.0000
第1章 矩阵运算与数组运算
MATLAB中最基本的数据对象就是数组或矩阵,标量可看作是1*1 的 矩阵,向量可看作是l*n或n*l的矩阵.一维数组是向量,二维数组便是 矩 阵,还有三维甚至更高维的数组。标量运算是数学的基础,然而, 当需要对多个 数执行同样的运算时,采用数组或矩阵运算将非常简洁 和方便. 1.4.1 创建矩阵 1.直接定义 例子 键入:
d= 135101
上述所创建的数组都是行向量,如何创建列向量呢?可使用转置算 子(’) 把行向量变成列向量.如 键入:
a=1:4;%表示从1到4,增量为1的行向量 b=a’ %表示向量的转置 输出: b=
1 2 3 4 有两种转置的符号: l)当数组是复数时,(’)产生的是复数共轭转置; 2) (.’)只对数组转置,但不进行共轭.
g.*h 输出:
ans= 123 10 12 14 24 27 30
提示: 设 a=[a1 a2 a3],b=[b1 b2 b3],c=标量 标量加法 a+c=[a1+c a2+c a3+c]; 标量乘法 a*c=[a1*c a2*c a3*c]; 数组加法 a+b=[a1+b1 a2+b2 a3+b3]; 数组乘法 a.*b=[a1*b1 a2*b2 a3*b3]; 数组右除 a./b=[a1/b1 a2/b2 a3/b3]; 数组左除 a.\b=[b1/a1 b2/a2 b3/a3]; 数组求幂 a.^c=[a1^c a2^c a3^c]; c.^a=c^a1 c^a2 c^a3]; a.^b=[a1^b1 a2^b2 a3^b3];
隔行向量x. 有时所需的数组不具有易于描述的线性或对数分隔关系,这时使用数组 编址和表达式结合的功能可避免每次一个地输人数组元素. 例子
键入: a=1:5; b=1:2:9;c=[b a] 输出:
C= 1357812345
创建的数组c,由b中元素和a中元素构成.又如, 键入:
d=[a(1:2:5)1 0 1] 输出:
ir= 145
-2.8000 9.5000
738
3.5000 26
5.4000
7.0000
7.3000
3.矩阵函数
d=eig(A),[v,d]=eig(A ) 特征值与特征向量
det(A)
行列式计算
inv(A)
矩阵的逆
orth(A)
正交化。
poly(A)
特征多项式
rank(A)
矩阵的秩
trace(A)
1.标量一数组运算 标量与数组的加、减、乘、除和点乘方(.^)是对数组的每个元素进 行运算,得到同样大小的数组. 例子 键入:
a=l:5;3*a-5 输出:
ans=-2 1 4 7 10 键入:
a.^2 输出:
ans=1 4 9 16 25 2.数组-数组运算 当两个数组具有相同大小时,加、减、点乘(.*),点除(./).和点乘 方运算(.^)是按元素对元素方式进行的.例如, 键入: g=[1 2 3;5 6 7;8 9 10]; h= [1 1 1;2 2 2;3 3 3];
矩阵的迹(对角元素之和)
zeros(m,n)
m行n列的零矩阵
ones(m,n)
m行n列的全1矩阵
eye(n)
n阶单位矩阵
rand(m,n)
m行n列的均匀分布随机数矩

randn(m,n)
m行n列的正态分布随机数矩

做:利用帮助了解函数max,min,sum,mean,sort,length,
矩阵函数
MATLAB中的常用数学函数有 三角函数:正弦sin(x),双曲正弦sinh(x),反正弦asin(x),反双曲 正弦asinh(x),余弦cos(x),正切tan(x),余切cot(x),正割sec(x),余割 csc(x)等. 指数函数:exp(x),自然对数log10(x),以 2为底的对数log2(x),平 方根sqrt(x)等. 整值函数:朝零方向取整fix(x),朝- 方向取整floor(x),朝+ 方 向取整ceil(x),四舍五人到最接近的整数round(x),符号函数sign (x)等. 其他数学函数:绝对值或复数的幅值abs(x)等 2.数组特征及矩阵操作函数 size(A) 返回一个二元素向量,第一个元素为A的行数,第二 个元素为A的列数 size(A,1) 返回 A的行数 siZE(A,2) 返回 A的列数 length(A) 返回max(size(A)) flipud(A) 矩阵作上下翻转 fliplr(A) 矩阵作左右翻转 diag(A) 提取A的对角元素,返回列向量 diag(v) 以向量v作对角元素创建对角矩阵 最大值 max,最小值min,求和sum,求平均值mean,按升序排列 sort等函数,只有当它们作用于向量时才有意义.它们也可作用于矩 阵,此时产生一个行向量,行向量的每个元素是函数作用于矩阵相应列 向量的结果. 例子 键人:
A=[1 2 3;4 5 6] 输出:
A= 123 456
这里A为一个2行3列的数组或矩阵.空格或逗号用于分隔某一行的 元素,分号表示开始新的一行. 键入:
A(2,3)=0 %将第2行,第3列的元素置为0. 输出:
A= 123 450
2.一维数组的简单构造 前面我们通过键人矩阵或数组中的每个元素来输人一个矩阵或数 组,当数组中的元素有成百上千时,怎么办呢?对于一维数组有两种简 单的输人格式。 例如, X=0:0.1:1 %从0到l,增量为0.1. X=linspace(0,pi,11) %11 个从 0到pi的等间隔数, 在MATLAB中这两种创建数组的方式是最常见的. 上述数组创建形式所得到的数组的元素之间是线性分隔的特殊情况,当 需要对数分隔的数组时,MATLAB提供了函数logspace. 格式:x=logspace(first,last,n) 创建从10的first次方开始,到10的last次方结束,有n个元素的对数分
read,size的功能和用法.
输出: B= 456 789
键人: C=A(1:2,[1 3]) % A的第l,2行,第1,3 列
输出: C= 13 46 还有A(1:2:3,3:-1:1)想想将输出什么? 将几个ቤተ መጻሕፍቲ ባይዱ阵接在一起称为拼接,左右拼接行数要相同,上下拼接列
数要相同.例如, 键入:
D=[C,zeros(2,1)] 输出:
D= 130 460
注意: 1)当 A为方阵,p>1为整数时,A^p表示 A自乘 p次;
2)当 A和P均为矩阵时,不能计算A^P. 1.4.4 函数 1.常用的数学函数 单变量数学函数的自变量可以是数组,此时,输出的是各元素的函数值 构成的同规格数组. 例子 输人:
a=[1 2 3;4 5 6];sin(a) 输出:
ans = 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794
在 MATLAB中,数组元素用下标访问,如 y(2)是y的第2个元素. 例如, 键入:
y(3) %表示y的第3个元素 输出:
ans= 0.5878
为了同时访问一块元素,MATLAB用冒号来表示. 键入:
x(1:5) 输出:
ans= 0 0.3124 0.6283 0.9425 1.2566
键人: y(3:-1:1)
l.4.3 矩阵的运算 MATLAB提供了下列矩阵运算
+ 加法; - 减法;’转置运算;* 乘法;^ 乘幂;\ 左除;/ 右除 除除法外其他运算都与线性代数中定义的一样.这里只介绍一下除法
运算. 设A是可逆矩阵 1)AX=B的解是A左除B,即X=A\B,意为用A-1左乘以B. 2)XA=B的解是A右除B,即X=B/A,意为用A-1右乘以B.
键入: E=[D ; eye(2),ones(2,l)]
输出: E= 130 460 101 01l
提示: A(:) 逐列提取A中的所有元素作为一个列向量. A(I) 把A看作列向量则:X提取其中第i个元素. A(r,c) 提取A中,由索引向量r定义的行,和由索引向量c定义的列所构 成的A的子数组. A(r,:) 提取A中,由索引向量r定义的行,和全部列所构成的A的子数 组. A(:,c) 提取A中,由全部行,和由索引向量c定义的列所构成的A的子数 组. 1.4.2 数组运算
4.矩阵的剪裁与拼接
从一个矩阵中取出若干行(列)构成新矩阵称为剪裁,冒号“:”是 非常重要的剪裁工具。
例子 键入:
A=[1 2 3;4 5 6;7 8 9]; A(3,:) %A的第3行 输出:
ans= 789
键入: A(:,l) % A的第 1列
输出: ans= 1 4 7
键入: B=A(2:3:,) %A的第2,3行
3.一维数组的操作 例子 键入: x=[0.1*pi.2*pi.3*pi.4*pi.5*pi.6*pi.7*pi.8*pi.9*pi pi]
y=sin(x) 输出:
y=
Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511
Columns 8 through 11 0.8090 0.5878 0.3090 0.0000
输出: ans= 0.5878 0.3090 0 3:-1:1表示从3开始减1计数,到1为止.又如
键入: x(2:2:7)
输出: ans= 0.3142 0.9425 1.5708 2:2:7表示从2开始加2计数,到7为止.再如
键人: y([8 2 9 1])
输出: ans= 0.8090 0.3090 0.5878 0 这里是按照数组[8 2 9 1]提供的次序来提取y数组中的元素
相关文档
最新文档