Matlab矩阵基础(数组)
一.创建矩阵(数组)
1)直接生成一维数组:
>> a = [1 2 3 4 5]
a =
1 2 3 4 5
>> a = [1,2,3,4,5]
a =
1 2 3 4 5
可以用逗号或者空格隔开,表示单个的元素;
2)直接生成二维数组:
>> a = [1 2 3;4 5 6]
a =
1 2 3
4 5 6
>> a = [1 2 3
4 5 6]
a =
1 2 3
4 5 6
用 分号(;) 或者 换行 来表示数组的维度。
3)其他生成方法:
函数 | 作用 |
---|---|
zeros(i,j) | 生成 i 行 j 列的全0矩阵 |
ones(i,j) | 生成 i 行 j 列的全1矩阵 |
eye(i,j) | 生成单位矩阵 |
rand(i,j) | (0,1)区间均匀分布的随机矩阵 |
randn(i,j) | 均值为0,方差为1的标准正态随机分布矩阵 |
注意: 括号里面只写一个数字表示方阵。
>> a = (0:0.2:1) %以0为初始值,1为终止值,0.2为间隔生成数组,中间用 : 隔开
a =
0 0.2000 0.4000 0.6000 0.8000 1.0000
>> a = linspace(0,1,10) %以0为初始值,10为终止值,1为增量生成数组,中间用,隔开
a =
0 0.1111 0.2222 0.3333 0.4444 0.5556 0.6667 0.7778 0.8889 1.0000
>> a = [] %生成空数组
a =
[]
>> a = zeros(2,2) %生成2行2列全为0的数组
a =
0 0
0 0
>> a = ones(2,3) %生成2行3列全为1的数组
a =
1 1 1
1 1 1
>> a = rand(2,3) %生成2行3列的矩阵,每个数为0-1间的随机数
a =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
>> a = 1:3;
>> b = 1:0.2:2;
>> c = [b a] %拼接矩阵
c =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000 1.0000 2.0000 3.0000
注意:
在语句后面加上分号;那么这条语句将不会输出结果!
二.矩阵运算
符号 | 作用 |
---|---|
a+b | 对应位置元素直接相加 |
a.*b | 对应位置元素直接相乘,比如a=[1,2] ,b=[3,4] ,那么结果为[3,8] |
a*b | 矩阵的相乘,a矩阵的列数必须等于b矩阵的行数(线性代数) |
a/b | 矩阵a除矩阵b |
a\b | 矩阵b除矩阵a |
a./b | 数组a对应的元素除数组b对应的元素 |
a.\b | 数组b对应的元素除数组a对应的元素 |
a^b | 矩阵的乘方 |
a.^b | 数组中对应位置数的乘方 |
>> a = [2 4];
>> b = [1 2];
>> c = a/b %矩阵相除
c =
2
>> a = [2 4];
>> b = [1 2];
>> c = a./b %对应元素相除
c =
2 2
三.矩阵的增删查改
1)增加元素:
必须按照顺序加入,比如a数组现在有5个元素,那么下一个加入的元素下标必须为6,而不能为7,8…
注意: Matlab中数组的下标是从0开始的。
>> a = [1 2 3 4];
>> a(5)=5; %注意是小括号
>> a
a =
1 2 3 4 5
2)删除元素:
>> a = [1 2 3 4];
>> a(2)=[]; %删除操作
>> a
a =
1 3 4
3)查找元素:
>> a = [1 2 3 4 5 6 7];
>> a(2) %第二个元素
ans =
2
>> a([1 3 4]) %第一三四个元素
ans =
1 3 4
>> a (1:5) %前五个元素
ans =
1 2 3 4 5
>> a(find(a>5)) %大于5的元素
ans =
6 7
>> a(3:end) %从第三个到最后一个
ans =
3 4 5 6 7
>> a(7:-1:3) %从第三个到第七个的倒序
ans =
7 6 5 4 3
4)修改元素:
>> a = [1 2 3 4];
>> a(2)=10;
>> a
a =
1 10 3 4
四.矩阵常用函数
1)求矩阵大小
>> A = [1 3 4; 2 3 4];
>> size(A) %2行3列的矩阵
ans =
2 3
>> length(A) %找到行数和列数中大的那个数
ans =
3
2)矩阵的转置
>> A = [1 2 3; 4 5 6];
>> A' %在矩阵后面加'
ans =
1 4
2 5
3 6
3)矩阵的求逆
注意: 矩阵必须是方阵才可以求逆
>> A = [1 2 3
4 5 6
7 8 9];
>> inv(A)
警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND = 2.202823e-18。
ans =
1.0e+16 *
0.3153 -0.6305 0.3153
-0.6305 1.2610 -0.6305
0.3153 -0.6305 0.3153
4)求矩阵行列式的值
>> det(A) %求矩阵行列式的值
ans =
-9.5162e-16