常用数学软件教程 032 第3章 MATLAB使用基础 第2节 数值矩阵Word文档下载推荐.docx
《常用数学软件教程 032 第3章 MATLAB使用基础 第2节 数值矩阵Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《常用数学软件教程 032 第3章 MATLAB使用基础 第2节 数值矩阵Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
>
A=[-100;
010];
%逗号和空格等价
A
A=
-100
010
键入命令后,按回车键,不输出结果,“%…”为注释语句,不参与运算。
键入命令后,按回车键。
输出结果。
例3.2.2利用例3.2.1中的矩阵
创建一个矩阵
。
解新
中的前两行与例3.2.1中的
相同,故键入:
clear%清除内存变量
A=[A;
00i]
-1.000000
01.00000
000+1.0000i
创建复数矩阵时,除了上述方法外也可以用实数矩阵和复数矩阵相加的方法,如对于本例的矩阵,也可键入:
clear
A=[A;
000]+[000;
000;
2.创建特殊数值矩阵的指令输入法
对于某些特殊矩阵,MATLAB中设有直接的专用指令,这给它们的创建、运算,特别是给编程带来很多方便。
表3-2列出了一些创建特殊矩阵的专用指令:
表3-2
指令格式
功能
zeros(n)
zeros(m,n)
ones(n)
ones(m,n)
eye(n)
diag(a,k)
rand(n)
rand(m,n)
randn(n)
rsndn(m,n)
magic(n)
tril(a)(或triu(a))
输出n阶全零方阵
输出m×
n全零方阵
输出n阶全1方阵
n全1方阵
输出n阶单位方阵,n=1时可以省略
输出矩阵a主对角线右移k列时其元素构成的列向量,k=0时可省略
输出n阶均匀分布的随机方阵
n阶均匀分布的随机方阵
输出n阶正态分布的随机方阵
n阶正态分布的随机方阵
输出n阶魔方阵(各行、列元素及两主对角线元素的和均为(n3+n)/2)
输出矩阵a主对角线下(上)方元素构成的下(上)三角矩阵
例3.2.3创建一个3×
5阶的全零矩阵。
解键入:
zeros(3,5)
ans=
00000
例3.2.4创建一个3×
5阶的随机矩阵(元素取值在[0,1]但却无法事先确定的矩阵)。
rm=rand(3,5)
rm=
0.95010.48600.45650.44470.9218
0.23110.89130.01850.61540.7382
0.60680.76210.82140.79190.1763
矩阵赋值,变量名为rm,键入命令后,按回车键。
如果紧接着再一次键入rm=rand(3,5),得出的矩阵未必和它相同。
例3.2.5创建一个5阶魔方矩阵。
magic(5)
17241815
23571416
46132022
101219213
11182529
该方阵的各行、列元素及两主对角线元素的和都等于(n3+n)/2=(53+5)/2=65
3.变换矩阵结构的指令输入法
在编写程序和一些特殊的计算中,经常需要对已输入的矩阵结构作某种变换,即不改变矩阵中元素的总数和各元素的取值,仅使其位置发生变化,如使矩阵整体发生旋转、翻转等变换,则称为变换矩阵结构。
现将常用的几个变换矩阵结构指令列在表3-3中:
表3-3
flipud(A)
fliplr(A)
rot90(A)
rot90(A,k)
reshape(A,m,n)
输出矩阵A上下翻转后的矩阵
输出矩阵A左右翻转后的矩阵
输出矩阵A逆时针旋转
后的矩阵
输出矩阵A沿逆时针旋转k个
后的矩阵,k为正负整数
输出一个m×
n阶矩阵,它是由矩阵A的m×
n个元素重新排列构成的矩阵,重排后各元素在矩阵中的序号不变
例3.2.6使5阶魔方矩阵左右翻转。
a=fliplr(magic(5))
a=
15812417
16147523
22201364
321191210
92251811
例3.2.7将例3.2.4中的3×
5阶矩阵rm变成5×
3矩阵。
0.40570.41030.35290.13890.6038
0.93550.89360.81320.20280.2722
0.91690.05790.00990.19870.1988
reshape(rm,5,3)
0.40570.05790.2028
0.93550.35290.1987
0.91690.81320.6038
0.41030.00990.2722
0.89360.13890.1988
元素总数和各元素在矩阵中的序号(按先列后行排列的顺序号),变换前后不变。
b=[1112131415;
2122232425;
3132333435]
b=
1112131415
2122232425
3132333435
reshape(b,5,3)
113224
211334
312315
123325
221435
4.一些特殊向量(行矩阵)的创建
行(列)矩阵即向量,是矩阵的一个特例,它的创建方法和矩阵完全一样。
但是,如果它的各元素取值有一定的规律可循,这时可用下述的简便方法创建。
(1)等差数列型向量的创建。
若向量各元素的取值构成一个等差数列,有下述两种简便的创建方法。
a)增量输入法。
输入格式为:
●t=a:
h:
b或t=[a:
b],t=(a:
b)
①输入参数a为初值,b为终值,h为公差(步长,增量),中间用冒号间隔。
②公差h可正可负,省略时,默认h=1。
③输出量t为一个等差数列:
a,a+h,a+2h,…,b*-h,b*(b*≤b且b-b*≤h)。
如键入:
t1=0:
0.2:
2.1
t1=
Columns1through7
00.20000.40000.60000.80001.00001.2000
Columns8through11
1.40001.60001.80002.0000
键入命令后,按回车键
又如键入:
t2=1:
8
t2=
12345678
输出结果
b)指令输入法。
调用格式为:
●t=linspace(a,b,n)
①输入参数a,b分别为初值和终值,即向量的第一分量和最末分量。
②输入参数n是等分(b-a)的节点数(含两端点),省略n时默认n=100。
③输入参数间的逗号不能省略。
④输出参数t为一个等差数列:
t3=linspace(1,8.5,8)
t3=
1.00002.07143.14294.21435.28576.35717.4286
Column8
8.5000
(2)等比数列型向量的创建。
下拉的各分量的取值构成等比数列时,可用对数等分指令logspace创建,调用格式为:
●q=logspace(log10(a),log10(b),n)或q=logspace(as,bf,n)
①输入参数a为等比数列的初值,b为终值,n为等按等比数列划分时的节点数。
②输出参数q是一个初值为a,终值为b的等比数列(注意,初终值不是as和bf),共有n项,公比为
③省略n时默认n=100。
④as=log10(a),bf=log10(b),log10(a)是以10为底、a的对数lga在MATLAB中的表达式。
logspace(0,1,5)
1.00001.77833.16235.623410.0000
或键入;
logspace(log10
(1),log10(10),5)
后项与前项的比值均等:
当矩阵各元素取值之间构成等差或等比数列时,可以把上述特殊向量的创建方法与变换矩阵结构指令结合起来使用,这给某些特殊元素较多的矩阵的输入带来很大方便。
下面的例题就用了这种方法,它的元素并不多,只是为了说明运用这种方法的原理。
例3.2.8创建矩阵
解变换矩阵d中各元素的位置可以构成一个等差数列,反过来可以先输入一个等差数列向量,通过改变结构达到要求。
据此原理键入:
rot90(reshape(1:
8,4,2),-1)
4321
8765
8,4,2),3)
5.创建n个分量都等于1的向量
键入g1=linspace(1,1,n),logspace(0,0,n)或ones(1,n),均可创建一个各项数值都是1的n维向量,这在绘图、编程和某些特殊计算中经常用到。
linspace(1,1,6)
111111
logspace(0,0,6)
ones(1,6)
111111
6.常数变量的赋值
常数可以看作一行一列的矩阵,也可以看作是点向量,它的赋值可以选用下述任何一种方法。
假设给变量a2,b2,c2分别赋值4,3,6,则可键入:
a2=4,b2=(3),c2=[6]
a2=
4
b2=
3
c2=
6
3.2.3 数值矩阵元素的编辑
用一个符号代表已输入数值的矩阵的单个元素或部分元素,称为矩阵元素的标识,元素的基本标识方法如下所述。
1.矩阵元素的标识方法
(1)用符号a(p)标识已输入矩阵a中序号为p(正整数)的元素,矩阵中元素的序号是把所有元素按“先列后行”排列是的顺序号。
如3×
3矩阵元素的序号排列方法为:
147
258
369
用冒号代替p时,即a(:
)表示矩阵a中所有元素按上述规定顺序排列成的列阵。
(2)a(m,n)表示矩阵a中第m行、第n列的一个元素(m和n均为正整数),则:
a)若用冒号“:
”代替a(m,n)中的行号m(或列号n)时表示a的第n列(或第m行)所有元素构成的列阵(或行阵)。
b)若把a(m,n)中的m换成一个行阵,如m=[p,q,r](p,q,r均为正整数),则a(m,n)=a([p,q,r],n)表示矩阵a中第p,q,r行、第n列元素构成的列阵。
c)若把a(m,n)中的n换成一个行阵,如n=[p,q,r](p,q,r均为正整数),则a(m,n)=a(m,[p,q,r])表示矩阵a中第m行、第p,q,r列元素构成的行阵。
d)若把a(m,n)中的m(或n)换成“p:
q”(p≤q),则a(p:
q,n)(或a(m,p:
q))表示矩阵a中第p到q行(或列)、第n列(或第m行)的所有元素构成的列阵(或行阵)。
e)若把a(m,n)中的m和n都换成行阵,则a(m,n)=a([p,q,r],[w,s])(w,s为正整数)表示由矩阵a中第p,q,r行、第w,s列交点上元素构成的矩阵。
(3)对于三维矩阵A(相当于若干个平面矩阵一页一页的叠合,每一页表示一个平面矩阵),用A(:
,:
,n)表示第n页的平面矩阵。
例3.2.9已知
,那么变量d1=A(:
,1),d2=A(2:
3,:
),d3=A([2,3],[1,3])各表示什么样的矩阵。
010;
00i];
d1=A(:
1),d2=A(2:
3,:
),d3=A([2,3],[1,3])
d1=
-1
0
d2=
d3=
00
00+1.0000i
例3.2.10已知A=reshape(1:
8.5,2,4),
,如何用A组合成B。
A=reshape(1:
8.5,2,4)
1357
2468
比较A和B可知,B的第1~4列前两行正好等于A,而后两行是把A左右翻转得到的。
B的最后一列取自A的不同元素。
据此分析可知,键入:
B=[A,[A(3);
A
(2)];
fliplr(A),[A
(1);
A(4)]]
B=
13573
24682
75311
86424
2.数值矩阵的增删修改
要想对已输入矩阵的某个元素或部分元素进行修改,首先将欲修改部分加以标识,然后再对被标识部分重新赋值。
因此矩阵的增删修改,实际上就是对被修改部分元素的标识和重新赋值。
例3.2.11把例3.2.9中矩阵A增加一个第4行,其数值为1,-1,-1。
clear
A(4,:
)=[1-1-1]
1.0000-1.0000-1.0000
例3.2.12使例3.2.11中矩阵A的第2行元素全部消失。
)=[1-1-1];
A(2,:
)=[]
注意空矩阵不是零矩阵
例3.2.13使例3.2.12中矩阵A的第2列改为246,并增加一个第4列:
其数值是3,5,7。
A(4,:
)=[];
A(:
2)=[2;
4;
6];
A(:
4)=[3;
5;
7]
-1.00002.000003.0000
04.00000+1.0000i5.0000
1.00006.0000-1.00007.0000
3.2.4 数值矩阵的运算法则
(1)
MATLB对数值矩阵提供了两种不同的运算方法:
矩阵算法和数组算法。
所谓“矩阵算法”就是把每一个矩阵都看作一个整体,各种运算完全按照线性代数中的矩阵运算法则进行,运算的书写形式和元素符号都与矩阵理论中几乎完全一样。
所谓“数组算法”就是把每一个矩阵看作由其元素构成的一组数据(数组),运算是在参与运算矩阵的对应元素之间进行的数与数的运算。
这种算法方便于对大批数据的处理和一次求出多个函数值。
这里只介绍数值矩阵的“矩阵算法”,3.2.5节将介绍数值矩阵的“数组算法”。
1.数值矩阵维数的查验和矩阵的转置
(1)查验矩阵维数指令。
进行矩阵运算之前,经常要考虑矩阵的维数,所以应知道如何用指令查验矩阵的维数。
查验矩阵维数指令size的使用格式为:
size(a)或size(a,r)
a)输入参数为待查的已输入矩阵或向量。
b)输入参数r可取1或2。
当r=1时输出a的行数;
当r=2时输出a的列数。
c)省略输入参数r、仅有参数a时,输出二维向量(m,n),表示矩阵a是m×
n维。
例如,欲查验例3.2.10中矩阵B的维数,可以在指令窗中键入:
8.5,2,4);
B=[A,[A(3);
A(4)]];
size(B)
45
结果表明B是一个4行5列的矩阵。
若键入:
size(B(3,3))
11
这表明B(3,3)是一个一行一列的矩阵,即一个数。
(2)求矩阵共轭转置的指令。
a)使矩阵转置的指令是“’”,使用格式为A’,输出矩阵A的转置矩阵AT。
b)使矩阵变成其共轭的指令是conj,使用格式为conj(A),输出矩阵A的共轭矩阵
c)利用上述两个指令使矩阵仅发生转置的方法有以下两种:
●如果为实数矩阵,用“’”就可得到它的转置矩阵,即用A’就得出AT。
●如果为复数矩阵,用conj(A’)或conj(A)’可得出AT。
例3.2.14已知
,求
的共轭矩阵和共轭转置矩阵。
解令
,则在指令窗中键入:
a=[1i3;
9i2-i8;
748+i];
a1=conj(a),a2=a'
a1=
1.00000-1.0000i3.0000
0-9.0000i2.0000+1.0000i8.0000
7.00004.00008.0000-1.0000i
1.00000-9.0000i7.0000
0-1.0000i2.0000+1.0000i4.0000
3.00008.00008.0000-1.0000i
※注;
在标准键盘(大键盘)中,英文格式下,按分号键“;
”右边的“‘”即可输出符号“’”
2.矩阵的加法、减法和乘法运算指令
矩阵进行加减法、乘法运算时,其运算符号分别为“+”、“-”和“*”,用这些符号把参与运算的矩阵连接起来,回车便可得出计算结果。
(1)矩阵进行加减法运算时,它们的维数必须相同,即行数、列数分别相等。
(2)两个矩阵相乘时它们的内维数必须相等,即左矩阵的列数必须等于右矩阵的行数,用a*b或指令mtimes(a,b)。
(3)进行方阵a的n次幂an运算时,输入a^n或mpower(a,n)。
这时,若整数n>
0,则输出方阵等于n个a相乘的结果;
若整数n<
0,则输出的方阵等于n个a连乘后的逆阵;
若n非整数,其数学意义属“矩阵分析”的范畴。
(4)矩阵与一个常数进行加减法运算在线性代数中是没有意义的,但在MATLAB中有如下规定:
若a为矩阵,d为常数,作a±
b的运算意义为:
a±
b*ones(size(a))
即相当于矩阵a的每一个元素都与数d进行一次加减法运算。
例3.2.15已知矩阵
,求:
a=[123;
541;
259];
b=[35;
61;
29];
c=[612;
528;
471];
...
a1=a+c,a2=a*b,a3=a*c,a4=c*a%"
..."
为续行号,表示换行
735
1069
61210
2134
4138
5496
a3=
282621
542043
737553
a4=
152637
315889
414128
例3.2.16已知
,计算方阵
的幂乘:
和
a=[1