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

更新时间:2023-06-10 19:22:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

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

MATLAB中最基本的数据对象就是数组或矩阵,标量可看作是1*1 的矩阵,向量可看作是l*n或n*l的矩阵.一维数组是向量,二维数组便是矩 阵,还有三维甚至更高维的数组。标量运算是数学的基础,然而,当需要对多个 数执行同样的运算时,采用数组或矩阵运算将非常简洁和方便.

1.4.1 创建矩阵

1.直接定义 例子

键入:

A=[1 2 3;4 5 6]

输出:

A=

1 2 3

4 5 6

这里A为一个2行3列的数组或矩阵.空格或逗号用于分隔某一行的元素,分号表示开始新的一行.

键入:

A(2,3)=0 %将第2行,第3列的元素置为0.

输出:

A=

1 2 3

4 5 0

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个元素的对数分隔行向量x.

有时所需的数组不具有易于描述的线性或对数分隔关系,这时使用数组编址和表达式结合的功能可避免每次一个地输人数组元素. 例子

键入:

a=1:5; b=1:2:9;c=[b a]

输出:

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

1 3 5 7 8 1 2 3 4 5

创建的数组c,由b中元素和a中元素构成.又如,

键入:

d=[a(1:2:5)1 0 1]

输出:

d=

1 3 5 1 0 1

上述所创建的数组都是行向量,如何创建列向量呢?可使用转置算子(’) 把行向量变成列向量.如

键入:

a=1:4;%表示从1到4,增量为1的行向量

b=a’ %表示向量的转置

输出:

b=

1

2

3

4

有两种转置的符号:

l)当数组是复数时,(’)产生的是复数共轭转置;

2) (.’)只对数组转置,但不进行共轭.

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

在 MATLAB中,数组元素用下标访问,如 y(2)是y的第2个元素.例如, 键入:

y(3) %表示y的第3个元素

输出:

ans=

0.5878

为了同时访问一块元素,MATLAB用冒号来表示.

键入:

x(1:5)

输出:

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

0 0.3124 0.6283 0.9425 1.2566

键人:

y(3:-1:1)

输出:

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数组中的元素

4.矩阵的剪裁与拼接

从一个矩阵中取出若干行(列)构成新矩阵称为剪裁,冒号“:”是非常重要的剪裁工具。

例子

键入:

A=[1 2 3;4 5 6;7 8 9];

A(3,:) %A的第3行

输出:

ans=

7 8 9

键入:

A(:,l) % A的第 1列

输出:

ans=

1

4

7

键入:

B=A(2:3:,) %A的第2,3行

输出:

B=

4 5 6

7 8 9

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

键人:

C=A(1:2,[1 3]) % A的第l,2行,第1,3 列

输出:

C=

1 3

4 6

还有A(1:2:3,3:-1:1)想想将输出什么?

将几个矩阵接在一起称为拼接,左右拼接行数要相同,上下拼接列数要相同.例如,

键入:

D=[C,zeros(2,1)]

输出:

D=

1 3 0

4 6 0

键入:

E=[D ; eye(2),ones(2,l)]

输出:

E=

1 3 0

4 6 0

1 0 1

0 1 l

提示:

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 数组运算

1.标量一数组运算

标量与数组的加、减、乘、除和点乘方(.^)是对数组的每个元素进行运算,得到同样大小的数组. 例子

键入:

a=l:5;3*a-5

输出:

ans=-2 1 4 7 10

键入:

a.^2

输出:

ans=1 4 9 16 25

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

2.数组-数组运算

当两个数组具有相同大小时,加、减、点乘(.*),点除(./).和点乘方运算(.^)是按元素对元素方式进行的.例如,

键入:

g=[1 2 3;5 6 7;8 9 10];

h= [1 1 1;2 2 2;3 3 3];

g.*h

输出:

ans=

1 2 3

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];

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.

注意:

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

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

-0.7568 -0.9589 -0.2794

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=[-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 -2.8000 3.5000 5.4000 7.0000 7.3000

9.0000 9.5000

ir=

1 4 5 7 3 8 2 6

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

3.矩阵函数

d=eig(A),[v,d]=eig(A ) 特征值与特征向量

det(A) 行列式计算

inv(A) 矩阵的逆

orth(A) 正交化。

poly(A) 特征多项式

rank(A) 矩阵的秩

trace(A) 矩阵的迹(对角元素之和) 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, 矩阵函数read,size的功能和用法.

本文来源:https://www.bwwdw.com/article/jsx1.html

Top