第1章 矩阵
MATLAB提供了强大的矩阵运算和数组运算功能,利用这些功能,可以非常方便地进行科学与工程计算.本章介绍MATLAB的矩阵运算、数组运算、关系运算、逻辑运算和一些常用的操作命令.
1.1 矩阵输入
矩阵输入MATLAB工作空间(即内存)中有三种方法.
方法1:直接列出矩阵元素.
方法2:建立M文件.
方法3:建立文本文件.
在MATLAB语言中,不需要对矩阵的维数和数据类型作说明,可直接使用.下面举例介绍矩阵的输入方式.
【例1-1】输入矩阵
在MATLAB命令窗口中,键入以下命令:
A=[1,2,3;4,5,6;7,8,9]
按回车键,可显示出以下结果:
A=
1 2 3
4 5 6
7 8 9
这里,矩阵中每行元素之间用逗号分隔(也可用空格分隔,但采用逗号分隔更为清晰,建议采用逗号分隔),各行之间用分号分隔.
选择菜单项File→New→M-File,打开MATLAB编辑器,键入以下命令:
A=[1,2,3;4,5,6;7,8,9]
再选择菜单项File→Save,将它以文件名example1_1.m存盘.返回到MATLAB命令窗口,键入example1_1,按回车键,屏幕上也会显示矩阵A.
对于一些数量大且杂乱无章的数据的输入,建议采用方法3来输入.
【例1-2】从某厂生产的零件中随机抽取了120个,测得其质量X(单位:g)的观察值如表1-1所示,试用方法3将它们赋值给矩阵A.
表1-1 质量观察值
首先,打开“记事本”,创建名为data.txt的文本文件,将表1-1中的数据复制到data.txt中,并将它保存在MATLAB工作目录work下.
然后,在MATLAB命令窗口中,键入以下命令:
A=load('data.txt')
即可将上述数据赋值给矩阵A.
1.2 矩阵元素
在MATLAB中,矩阵元素可以是表达式、行(列)向量或者另一个矩阵,使用方式非常灵活.
例如,键入x=[-1.3,sqrt(3),(1+2+3)*4/5],则显示结果为
x=
-1.3000 1.7321 4.8000
这里,sqrt(3)表示
3.单独的矩阵元素可以被函数调用,也可以被其他的矩阵调用.例如,再键入x(5)=abs(x(1)),即x5=|x1|,则矩阵x成为
x=
-1.3000 1.7321 4.8000 0.0000 1.3000
x是一个5维向量,由于x4未加定义,系统自动置为0.0000.
在矩阵中,可增加一个行向量、列向量或矩阵,拼装成一个新矩阵.
例如,如果,键入B=[A;[10,11,12]],其结果为
B=
1 2 3
4 5 6
7 8 9
再键入C=[A,[10;11;12]],其结果为
C=
1 2 3 10
4 5 6 11
7 8 9 12
再键入I=eye(size(A)),D=[A,I],其结果为
I=
1 0 0
0 1 0
0 0 1
D=
1 2 3 1 0 0
4 5 6 0 1 0
7 8 9 0 0 1这里,I=eye(size(A))表示与A同型的单位矩阵.
1.3 矩阵运算
1.3.1 转置矩阵
矩阵的转置矩阵用符号“’”来表示.
例如,键入A=[1,2,3;4,5,6;7,8,9],B=A′,则B的结果为
B=
1 4 7
2 5 8
3 6 9
1.3.2 矩阵加减
两矩阵必须同型才可进行加减运算.另外,MATLAB还特别作了扩充,允许矩阵与一个数量(即1×1矩阵)进行加减运算.
例如,键入A=[1,2,3;4,5,6;7,8,9],B=[1,4,7;2,5,8;3,6,9],则C=A+B的结果为
C=
2 6 10
6 10 14
10 14 18
例如,键入x=[-1,0,2],则y=x-1,z=x+2的结果为
y=
-2 -1 1
z=
1 2 4
1.3.3矩阵乘法
当左乘矩阵的列数等于右乘矩阵的行数时,两矩阵可以进行乘法运算.在MATLAB中,矩阵A乘以矩阵B应表示成A*B.
例如,如果,键入X′*Y与X*Y′,其结果为
ans=
4
ans=
2 1 -1
0 0 0
-4 -2 2
在MATLAB中,如果没有将表达式的值赋给某个变量,系统会自动将运算结果赋给默认变量ans(ans是answer的缩写,意指答案).
数乘矩阵运算,就是用数乘以矩阵的每一个元素.
例如,键入(-1)*Y,其结果为
ans=
2
1
-1
1.3.4矩阵除法
MATLAB有两种除法,即左除“\”与右除“/”.
若A为非奇异方阵,B为矩阵,则A\B,B/A的数学意义分别为AB,BA 这两种运算也可以分别表示为inv(A)*B,B*inv(A).
【例1-3】求解以下非齐次线性方程组:
在MATLAB命令窗口中,分别键入系数矩阵、右端列向量:
A=[2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6]
b=[8;9;-5;0]
键入命令det(A),可得到系数矩阵的行列式值为27,故系数矩阵A非奇异,方程组有唯一解 再键入命令x=A\b,其结果显示为
x=
3.000
-4.000
-1.000
1.000
1.4 数组运算
MATLAB为数组(又称行向量或列向量,简称向量)定义了非常灵活的运算规则.
1.4.1 数组的加减
数组的加减运算与矩阵的加减运算是完全相同的,其运算符号为“+”“-”.
1.4.2 数组的乘除运算
MATLAB提供了功能独特的数组乘“.*”、数组除“.\或./”运算.首先,介绍这些运算的数学意义.
设x=(x1,x2, ,xn),y=(y1,y2, ,yn),则
当然,在进行除法运算时,要求每个除数均不为零,否则系统会给出警告提示.
例如,键入x=[1,2,3],y=[4,5,6],再分别键入以下命令:
z1=x.*y
z2=x.\y
z3=x./y
则屏幕上会显示出以下结果:
z1=
4 10 18
z2=
4.0000 2.5000 2.0000
z3=
0.2500 0.4000 0.5000
1.4.3 数组的乘方
数组的乘方用符号“.^”来表示,而数组的乘方有三种形式.
1.向量的向量次方
例如,键入x=[1,2,3],y=[4,5,6],z=x.^y,其结果为
z=
1 32 729
它的数学意义是z=(1,2,3)=(1,32,729).
2.向量的数量次方
例如,键入x=[1,2,3],z=x.^2,其结果为
z=
1 4 9
它的数学意义是z=(12,22,32)=(1,4,9).
3.数量的向量次方
例如,键入x=[1,2,3],z=2.^x,其结果为
z=
2 4 8
它的数学意义是z=(21,22,23)=(2,4,8).
1.4.4 特殊数组的生成
如果一个数组的元素呈等差数列,除了从命令窗口直接键入,还可以利用运算符“:”快速生成.
例如,设x=[1,2,3,4],y=[4,3,2,1],欲将这两个数组输入MATLAB,只需在命令窗口中,分别键入x=1:1:4,y=4:-1:1即可.
x=1:1:4的意义是,以1为初值,1为步长,4为终值,生成数值小于等于4的等差序列x.
y=4:-1:1的意义是,以4为初值,.1为步长,1为终值,生成数值大于等于1的
展开