l 矩阵的输入
I. 直接输入创建矩阵
输入方法是先键入左方括弧“[”,然后按行直接键入矩阵的所有元素,最后键入右方括弧“]”。注意:整个矩阵以“[”和“ ]”作为首尾,同行的元素用“,”或空格隔开,不同行的元素用“;”或按Enter键来分隔;矩阵的元素可以为数字也可以为表达式,如果进行的是数值计算,表达式中不可包含未知的变量。
例4:直接输入创建矩阵
解:Matlab命令为
A = [1,2,3; 4,15,60; 7,8,9] ↙
1 2 3
4 15 60
7 8 9
C1=A(:,[1,3]),读取第一列和第三列数据
C2=A(:,2:3),读取第二列和第三列数据
或用Matlab命令
A=[1,2,3↙
4,15,66↙
7,8,9] ↙
1 2 3
4 15 60
7 8 9
II. 用矩阵函数来生成矩阵
MATLAB 提供了大量的函数来创建一些特殊的矩阵,表2.3给出MATLAB常用的矩阵函数。
表2.3 常用的矩阵函数
函数名称 | 函数功能 | 函数名称 | 函数功能 |
zero(m,n) | m行n列的零矩阵 | eig(A) | 求矩阵A的特征值 |
eye(n) | n阶方矩阵 | poly(A) | 求矩阵A的特征多项式 |
on | m行n列的元素为1的矩阵 | trace(A) | 求矩阵A的迹 |
rand(m,n) | m行n列的随机矩阵 | cond(A) | 求矩阵A的条件数 |
randn(m,n) | m行n列的正态随机矩阵 | rref(A) | 求矩阵A的行最简形 |
magic(n) | n阶魔方矩阵 | inv(A) | 求矩阵A的逆矩阵 |
hess(A) | hess 矩阵 | det(A) | 求矩阵A的行列式 |
sqrtm(A) | 求矩阵A的平方根 | expm(A) | 求矩阵A的指数值 |
funm(A) | 按矩阵计算的函数值 | logm(A) | 求矩阵A的对数值 |
rank(A) | 求矩阵A的秩 | morm(A,1) | 求矩阵A的范数 |
例5:输入矩阵 。
解:Matlab命令为
on
ans =
1 1 1
1 1 1
1 1 1
例6:输入矩阵
解:Matlab命令为
zeros(2,5) ↙ %生成元素都为0的2行5列零矩阵
ans =
0 0 0 0 0
0 0 0 0 0
例7:生成3阶魔方矩阵。
解:Matlab命令为
magic(3) ↙
ans =
8 1 6
3 5 7
4 9 2
l 操作符“:”的说明
j:k 表示步长为1的等差数列构成的数组:[j, j+1, j+2,…, k]
j:i:k 表示步长为i的等差数列构成的数组:[j,j+i,j+2*i,…, k]
A(i:j) 表示A(i),A(i+1),…,A(j)
例8:操作符冒号”:”的应用
解:Matlab命令为
1:5 ↙ %步长为1的等差数列。
Ans =
1 2 3 4 5
1:2:7 ↙ %步长为2的等差数列。
Ans =
1 3 5 7
8:-2:0 ↙ %步长为-2的等差、递减数列。
Ans =
8 6 4 2 0
l 对矩阵元素的操作
设A是一个矩阵,则在MATLAB中有如下符号表示它的元素:
A(i,j) 表示矩阵A的第i行第j列元素。
A(:,j) 表示矩阵A的第j列。
A(i,:) 表示矩阵A的第i行。
A(:,:) 表示A的所有元素构造2维矩阵
A(:) 表示以矩阵A的所有元素按列做成的一个列矩阵。
A(i) 表示矩阵A(:)的第i个元素。
[ ] 表示空矩阵
I. 元素的抽取与赋值
例9:已知矩阵 ,抽取与修改矩阵A的一些元素.
解:Matlab命令为
A=[1 23 56;sin(3) 7 9;log(2) 6 1] ↙ %输入矩阵A。
A =
1.0000 23.0000 56.0000
0.1411 7.0000 9.0000
0.6931 6.0000 1.0000
A(2,3) ↙ %求矩阵A的第二行第三列元素。
ans =
9
A(4) ↙ %求矩阵A的第四个元素。
ans =
23
A(2:4) ↙ %取矩阵A的A(2),A(3),A(4)。
ans =
0.1411 0.6931 23.0000
A(1,:) ↙ %取矩阵A的第一行。
ans =
1 23 56
A(:,3) %取矩阵A的第三列
ans =
56
9
1
a=A(1,3) ↙ %把矩阵A的第一行第三列元素赋值给变量a。
a =
56
A(2,1)=100 ↙ %把矩阵A的第二行第一列元素修改为100。
A =
1.0000 23.0000 56.0000
100.0000 7.0000 9.0000
0.6931 6.0000 1.0000
II. 矩阵的扩充
例10:已知矩阵 ,利用A与B生成矩阵 ,
, 。
解:Matlab命令为
A=[1,3;6,9]; %输入矩阵A
C= A↙
C(1,3)=100; %把矩阵A扩充为1行3列矩阵
C ↙
C =
1 3 100
6 9 0
B=[1,5;0,8]; ↙ %输入矩阵B
D=[A,B] ↙ %由矩阵A与B合成矩阵D
D =
1 3 1 5
6 9 0 8
AA=[A,zeros(2);zeros(2),B] ↙ %由矩阵A与B合成分块矩阵AA
AA =
1 3 0 0
6 9 0 0
0 0 1 5
0 0 0 8
III.矩阵的部分删除
例11:已知矩阵 ,删除矩阵A的第一行。
解:Matlab命令为
A=[1 23 56;sin(3) 7 9;log(2) 6 1]; ↙
A(1,:)=[] ↙ %删除矩阵A的第一行
A =
0.1411 7.0000 9.0000
0.6931 6.0000 1.0000
l 矩阵的运算
A+B: 矩阵加法
A-B: 矩阵减法
A*B: 矩阵乘法
A\B: 矩阵的左除
A/B: 矩阵的右除
transpose(A)或A’:A的转置
:数k乘以A
det(A): A的行列式:
rank(A):A的秩
reshape把指定的矩阵改变形状,但是元素个数不变,
例如,行向量:
a = [1 2 3 4 5 6]
执行下面语句把它变成3行2列:
b = reshape(a,3,2)
执行结果:
b =
1 4
2 5
3 6
若a=[1 2 3
4 5 6
7 8 9]
使用reshpe后想得到b=[1 2 3 4 5 6 7 8 9]
只需要将a转置一下就可以了:
b=reshape(a',1,9)