MATLAB是基于矩阵和数组计算的,可以直接对矩阵和数组进行整体的操作,MATLAB有三种矩阵运算类型:矩阵的代数运算、矩阵的关系运算和矩阵的逻辑运算。其中,矩阵的代数运算应用最广泛。本文主要讲述矩阵的基本操作,涉及矩阵的创建、矩阵的代数运算、关系运算和逻辑运算等基本知识。
矩阵的创建
直接输入法创建矩阵
% 1. 直接输入法创建矩阵
>> A = [1,2,3; 4,5,6; 7,8,9]
A =
1 2 3
4 5 6
7 8 9
函数法创建矩阵
简单矩阵
% 2. 函数法创建矩阵
>> zeros(3)
% 生成3x3的全零矩阵
ans =
0 0 0
0 0 0
0 0 0
>> zeros(3,2)
% 生成3x2的全零矩阵
ans =
0 0
0 0
0 0
>> eye(3)
% 生成单位矩阵
ans =
1 0 0
0 1 0
0 0 1
>> ones(3)
% 生成全1矩阵
ans =
1 1 1
1 1 1
1 1 1
>> magic(3)
% 生成3x3的魔方阵
ans =
8 1 6
3 5 7
4 9 2
>> diag(1:3)
% 对角矩阵
ans =
1 0 0
0 2 0
0 0 3
>> diag(1:5,1)
% 对角线向上移1位矩阵
ans =
0 1 0 0 0 0
0 0 2 0 0 0
0 0 0 3 0 0
0 0 0 0 4 0
0 0 0 0 0 5
0 0 0 0 0 0
>> diag(1:5,-1)
% 对角线向下移1位矩阵
ans =
0 0 0 0 0 0
1 0 0 0 0 0
0 2 0 0 0 0
0 0 3 0 0 0
0 0 0 4 0 0
0 0 0 0 5 0
>> triu(ones(3,3))
% 上三角矩阵
ans =
1 1 1
0 1 1
0 0 1
>> tril(ones(3,3))
% 下三角矩阵
ans =
1 0 0
1 1 0
1 1 1
随机矩阵
>> rand(3)
% 生成随机矩阵
ans =
0.2898 0.8637 0.0562
0.4357 0.8921 0.1458
0.3234 0.0167 0.7216
>> rand('state',0); % 设定种子数,产生特定种子数下相同的随机数
>> rand(3)
ans =
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> a = 1; b = 100;
>> x = a + (b-a)* rand(3)
% 产生区间(1,100)内的随机数
x =
38.2127 20.7575 91.1133
89.9610 31.0064 53.0040
43.4711 54.2917 31.3762
>> a = 1; b = 100;
>> a + fix(b * rand(1,50))
% 产生50个[1,100]内的随机正整数
ans =
列 1 至 15
4 72 77 6 63 27 32 53 41 90 58 57 40 70 57
列 16 至 30
35 60 28 5 84 11 73 45 100 57 47 42 22 24 32
列 31 至 45
87 26 97 31 38 35 71 62 76 80 22 90 90 94 28
列 46 至 50
48 26 37 53 39
相似函数扩展
>> randn(3)
% 生成均值为0,方差为1的正太分布随机数矩阵
ans =
-0.4326 0.2877 1.1892
-1.6656 -1.1465 -0.0376
0.1253 1.1909 0.3273
>> randperm(10)
% 生成1-10之间随机分布10个正整数
ans =
4 9 10 2 5 8 1 3 7 6
% 多项式x^3 - 7x + 6 的伴随矩阵
>> u = [1,0,-7,6];
>> A = compan(u)
% 生成伴随矩阵
A =
0 7 -6
1 0 0
0 1 0
>> eig(A) % 此处eig()函数用于求特征值
% 利用伴随矩阵求得方程的根
ans =
-3.0000
2.0000
1.0000
矩阵的运算
矩阵的代数运算
矩阵的算术运算
>> A = [1,1;2,2];
>> B = [1,1;2,2];
>> A
A =
1 1
2 2
>> B
B =
1 1
2 2
>> A + B
ans =
2 2
4 4
>> B-A
ans =
0 0
0 0
>> A * B
ans =
3 3
6 6
>> A^2
ans =
3 3
6 6
>> A^3
ans =
9 9
18 18
矩阵的运算函数
>> C = magic(3)
C =
8 1 6
3 5 7
4 9 2
>> size(C)
ans =
3 3
>> length(C)
ans =
3
>> sum(C)
ans =
15 15 15
>> max(C)
ans =
8 9 7
>> C'
ans =
8 3 4
1 5 9
6 7 2
>> inv(C)
ans =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
矩阵的元素群运算
元素群运算,是指矩阵中的所有元素按单个元素进行运算,也即是对应位置进行运算。
>> A = [1,2;3,4];
>> B = [1,2;3,4];
>> A .* B
ans =
1 4
9 16
>> A ./ B
ans =
1 1
1 1
>> A . B
ans =
1 1
1 1
>> A .^ B
ans =
1 4
27 256
矩阵元素群的运算函数
MATLAB提供了几乎所有初等函数,包括三角函数、对数函数、指数函数和复数运算函数等。大部分的MATLAB函数运算都是分别作用于函数变量(矩阵)的每一个元素。
>> x = [0, pi/6, pi/4, pi/3];
>> y = tan(x)
y =
0 0.5774 1.0000 1.7321
>> y = sin(x)
y =
0 0.5000 0.7071 0.8660
矩阵的关系运算
在使用关系运算时,首先应保证两个矩阵的维数相等或至少一个为标量。若参与运算的对象为两个矩阵,则关系运算对两个矩阵的对应元素进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。若参与运算的对象之一为标量,则关系运算将矩阵的每一个元素与该标量逐一进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。
>> A = [1,1;1,1];
>> B = [0,1;2,3];
>> A > B
ans =
2×2 logical 数组
1 0
0 0
>> A >= B
ans =
2×2 logical 数组
1 1
0 0
>> A == B
ans =
2×2 logical 数组
0 1
0 0
>> A ~= B
ans =
2×2 logical 数组
1 0
1 1
矩阵的逻辑运算
逻辑运算中,所有非零元素的逻辑值为“真”,用代码“1”表示;值为零的元素的逻辑值为“假”,用代码“0”表示。逻辑运算规则与关系运算基本一致,也是针对两个矩阵的对应元素。
>> A & B
ans =
2×2 logical 数组
0 1
1 1
>> A | B
ans =
2×2 logical 数组
1 1
1 1
>> ~ A
ans =
2×2 logical 数组
0 0
0 0
>> ~B
ans =
2×2 logical 数组
1 0
0 0