可键入b=a([2,4],[1,3])得 b =
4.0000 6.0000
0 6.5000
? 要抽除a中的第2、4、5行,可利用空矩阵[](指没有元素的矩阵,对任何
一个矩阵赋值[],就是使它的元素都消失,注意它与“零矩阵”不同)。 键入 a([2,4,5],:)=[]得 a =
1 2 3 7 8 9
对于“变量=表达式(或数)”的赋值形式,如果不要等式左端而只剩下右端,
则MATLAB会自动给出一个临时变量ans,把右端的结果暂存于ans中。例如键入a/7得 ans =
0.1429 0.2857 0.4286
1.0000 1.1429 1.2857 3、复数矩阵、运算及其赋值
(1)MATLAB的每一个元素都可以是复数,复数的虚数部分用i或j表示,这是在MATLAB启动时就在内部设定的。MATLAB中所有的运算符和函数都对复数有效。
例如:键入c=3+5.2i或c=3+5.2j得 c =
3.0000 + 5.2000i
(2)复数矩阵有两种赋值方法。 ? 对复数矩阵的元素逐个赋值。
如键入z=[1+2i,3+4i;5+6i,7+8i]得 z =
1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i
? 对其实部矩阵和虚部矩阵分别赋值。
如键入z=[1,3;5,7]+[2,4;6,8]*i得 z =
1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i 注意:
①只有数字与i的乘积可以省略乘号,在上述矩阵式中若省略乘号*,就会出错。
②如果在前面程序中曾给i或j赋过其他值,则i或j已不是虚数符号,那么
这些虚数赋值语句就不对了。此时应键入clear i, j,即把原赋的i,j清掉,然后再执行复数赋值语句。
(3)复数矩阵的转置、共轭运算
? 函数conj对矩阵的每个元素求共轭,即把各元素的虚部反号。
? 运算符 ' 对矩阵作共轭和转置,即把其行列互换,同时把各元素的虚部反号。 ? 因此,如果只求转置而不要共轭,就把conj和 ' 结合起来使用。 例如键入w=z',u=conj(z),v=conj(z)'得 w =
1.0000 - 2.0000i 5.0000 - 6.0000i 3.0000 - 4.0000i 7.0000 - 8.0000i u =
1.0000 - 2.0000i 3.0000 - 4.0000i 5.0000 - 6.0000i 7.0000 - 8.0000i v =
1.0000 + 2.0000i 5.0000 + 6.0000i 3.0000 + 4.0000i 7.0000 + 8.0000i 4、基本矩阵
? 单位矩阵eye(n)是n×n阶的方阵,其对角线上的元素为1,其余元素均等于
0。
? 全0矩阵zeros(m,n)是m×n的所有元素均为0的矩阵。
? 全1矩阵ones(m,n)是m×n的所有元素均为1的矩阵。
? 均分向量linspace(a,b,n)是在a与b之间均匀地产生n个点值,形成n维向量。 如:键入f1=ones(3,2),f2=zeros(2,3),f3=eye(2)得 f1 =
1 1 1 1 1 1 f2 =
0 0 0 0 0 0 f3 =
1 0 0 1
键入f4=linspace(0,1,5)得 f4 =
0 0.2500 0.5000 0.7500 1.0000
? 大矩阵可由小矩阵组成,但必须其行列数正确,恰好填满全部元素。 如键入f5=[1 1 1;2 2 2;3 3 3]得 f5 =
1 1 1 2 2 2 3 3 3 则键入fb=[f1,f5;f3,f2]可得 fb =
1 1 1 1 1 1 1 2 2 2 1 1 3 3 3 1 0 0 0 0 0 1 0 0 0
(二)矩阵的初等运算
1、矩阵的加减乘法 (1)矩阵加减法
两矩阵相加(减)就是其对应元素的相加(减),通过+、-运算符实现,要求相加(减)的两个矩阵的结构必须相同。用MATLAB的size语句来检查结构是否相同。例如: 键入 m = 5 n = 5
当两个矩阵相加(减)时,如果有一个是标量,则MATLAB承认算式有效,并自动将该标量扩展成同结构的等元素矩阵,再进行加(减)运算。例如: 键入x=[-1 0 1];y=x-1得 y =
-2 -1 0
对于一维矩阵(数组),可以用length语句来求其长度,它不区分列或行,只有一个输
[m,n]=size(fb)得
出量,而size有两个输出量,所以,作加减法的结构检验时只能用size。 (2)矩阵乘法
n×p的矩阵A与p×m的矩阵B的乘积C是一个n×m的矩阵,通过运算符*实现。p是A矩阵的列数,也是B矩阵的行数,称为这两个相乘矩阵的内阶数,这里要注意,两矩阵相乘的必要条件是它们的内阶数相等。
如果两个相乘的矩阵有一个是标量,则MATLAB不检查其内阶数,而用该标量乘以矩
阵的每个元素。
若把y转置,即y’为3×1的矩阵,而x是1×3的矩阵,则x*y’的内阶数相等为3
键入x*y’得 ans=2
该式子称为x左乘y’。如果使x右乘y’,则y’*x内阶数为1, 键入y’*x得 ans =
2 0 -2 1 0 -1
0 0 0
所以要注意左乘与右乘结果一般不同,只有单位矩阵例外,单位矩阵乘以任何矩阵,无论左乘还是右乘,其乘积仍等于该矩阵,但要保证单位矩阵的阶数与相乘矩阵的阶数相等。即 eye(n)*A=A A*eye(n)=A
2、矩阵除法及线性方程组的解
(1)线性代数中没有除法,只有逆矩阵,矩阵的除法是MATLAB从逆矩阵的概念引伸来的。有左除和右除两种情况。
B左除矩阵D相当于矩阵B左乘矩阵D的逆矩阵,记作D\\B。左除条件是:两矩阵的
行数必须相等。(D*X=B,X=D-1*B=D\\B,可见需要D与B的行数相等)
B右除矩阵D相当于矩阵B右乘矩阵D的逆矩阵,记作B/D。右除条件是:两矩阵的
列数必须相等。(X*D=B,X=B*D-1=B/D,可见需要D与B的列数相等)
(2)矩阵除法可以用来方便地解线性方程组。例如要求下列方程组的解x=[x1;x2;x3]。
6 x1+3x2+4 x3=3 -2x1+5x2+7x3=-4 8x1-4x2-3 x3=-7
此方程组可以写成矩阵形式Ax=B,求解的MATLAB程序为 A=[6 3 4;-2 5 7;8 -4 -3]; B=[3;-4;-7]; x=A\\B得 x = 0.6000 7.0000 -5.4000
下面来看矩阵左右乘除的一些示例。设A=[1 2 3;4 5 6],B=[2 4 0;1 3 5],D=[1 4 7;8 5 2;3 6 0],即 A =
1 2 3 4 5 6 B =
2 4 0 1 3 5