目录
2.6 format hex(二进制双精度数字的十六进制表示形式)
2.7 format rat(非常常用)---以分数的形式显示
1.关键字
ans | 命令行中经常看到的 |
i,j | 复数 |
Inf,-Inf | ∞ 例:1/0=inf; log(0)=-inf |
eps | 一个很小的数 2.2204e-16 |
NaN | 不是一个数 例:inf/inf=NaN |
pi | π |
也可以使用命令:iskeyword显示
{'break' }
{'case' }
{'catch' }
{'classdef' }
{'continue' }
{'else' }
{'elseif' }
{'end' }
{'for' }
{'function' }
{'global' }
{'if' }
{'otherwise' }
{'parfor' }
{'persistent'}
{'return' }
{'spmd' }
{'switch' }
{'try' }
{'while' }
2. Format
在你想要的format形式下,先format在键入你想要的结果
2.1 format long
>> format long
>> pi
ans =
3.141592653589793
2.2 format short
>> format short
>> pi
ans =
3.1416
2.3 format shortE
>> format shortE
>> pi
ans =
3.1416e+00
2.4 format longE
>> format longE
>> pi
ans =
3.141592653589793e+00
2.5 format bank(小数点后包含 2 位数)
>> format longE
>> pi
ans =
3.141592653589793e+00
2.6 format hex(二进制双精度数字的十六进制表示形式)
>> format hex
>> pi
ans =
400921fb54442d18
2.7 format rat(非常常用)---以分数的形式显示
>> format rat
>> 3/13 + 4/14 + 5/15
ans =
232/273
注:如果恢复默认值直接键入format即可
3.一些基础的命令
clc | 清除命令行窗口 |
clear/clear all | 清除所有的变量 |
who | 显示所有的变量 |
whos | 显示所有变量的信息,也可以指定变量whos 变量名 |
>>x = 1;
>>y = 2;
>>C = 3.1;
>> who
您的变量为:
C x y
>> whos
Name Size Bytes Class Attributes
C 1x1 8 double
x 1x1 8 double
y 1x1 8 double
>> whos x
Name Size Bytes Class Attributes
x 1x1 8 double
4.矩阵
4.1行矩阵--空格隔开或者逗号“,”隔开
>> a = [1 2 3 4]
a =
1 2 3 4
>> a = [1, 2, 3, 4]
a =
1 2 3 4
4.2列矩阵分号“;”隔开
>> b = [1; 2; 3; 4]
b =
1
2
3
4
4.3矩阵乘法
>> a*b
ans =
30
>> b*a
ans =
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
4.4构造一个m×n的矩阵
>> A = [1 21 6; 5 17 9; 31 2 7]
A =
1 21 6
5 17 9
31 2 7
4.5矩阵索引
如果查找矩阵中的某个元素的话,原则如上图,它是按照第一列进行标号,下面是5中不同基础的索引方式。
>> A(8) % 按照列标号
ans =
9
>> A([1 3 5]) % 第一个数是1 第二个数是31 第三个数是17
ans =
1 31 17
>> A([1 3; 1 3]) % 第一个数是1 和第三个数是31这是一行后面分号“;”之后就会变行
ans =
1 31
1 31
>> A([4 3; 5 7])
ans =
21 31
17 6
>> A(3, 2) % A(行,列)第3行第二列
ans =
2
下面这个相对有点复杂不过还是很好理解
>> A([1 3], [1 3]) % 如上图所示,前面的[1 3]表示第1 3行,后面的[1 3]表示第1 3列。也就是说逗号前面表示行,后面表示列,之后的交集就是所求矩阵
ans =
1 6
31 7
>> A([1], [2]) % 第1行第2列这种直接用A(1, 2)形式更好
ans =
21
>> A([1 2 3], [2 3]) % 1 2 3行,2 3列的交集,读者可自行尝试
ans =
21 6
17 9
2 7
4.6矩阵修改和索引
读者可以尝试以上矩阵的修改。
>> A(1, 2) = 76 % 单独修改某一个元素,可以直接行列方式索引
A =
1 76 6
5 17 9
31 2 7
>> A(3,:) % 提取某一行
ans =
31 2 7
>> A(:, 2) % 提取某一列
ans =
76
17
2
>> A(3, :) = [] % 去除某一行
A =
1 76 6
5 17 9
>> A(:, 2) = [] % 去除某一列
A =
1 6
5 9
>> A = [1 21 6 4; 5 17 9 34; 31 2 7 33; 3 56 2 21] % 重新构造一个A
A =
1 21 6 4
5 17 9 34
31 2 7 33
3 56 2 21
>> A(:, 1:3) % 对第1至第3列进行索引
ans =
1 21 6
5 17 9
31 2 7
3 56 2
>> A(2:4, :) % 对第2至第4行进行索引
ans =
5 17 9 34
31 2 7 33
3 56 2 21
>> A(:) % 重构A,从第1列开始一次排成一列
ans =
1
5
31
3
21
17
2
56
6
9
7
2
4
34
33
21
4.7向量的创建colon
x = j:k | 创建一个包含元素 [j,j+1,j+2,...,j+m] 的单位间距向量 x |
x = j : i: k | 创建一个等间距向量 x ,以 i 作为元素之间的增量 |
>> x = 1:9 % 步长为1
x =
1 2 3 4 5 6 7 8 9
>> x = 1:2:6 % 步长为2
x =
1 3 5
>> x = 10:-1:0 % 步长为复数时会递减
x =
10 9 8 7 6 5 4 3 2 1 0
>> str = 'a':2:'z' % 也可以是字符串
str =
'acegikmoqsuwy'
>> a = ([1:5; 2:3:15; -2:0.5:0]) % 也可以创建一个矩阵。前提维数要一样
a =
1.0000 2.0000 3.0000 4.0000 5.0000
2.0000 5.0000 8.0000 11.0000 14.0000
-2.0000 -1.5000 -1.0000 -0.5000 0
4.8矩阵的拼接
>> a = [1 2; 3 4]
a =
1 2
3 4
>> b = [5 6; 7 8]
b =
5 6
7 8
>> A = [a b] % 增广矩阵
A =
1 2 5 6
3 4 7 8
>> B = [a; b] % b于a下方
B =
1 2
3 4
5 6
7 8
4.9其它形式的矩阵
linspace() | y = linspace(x1,x2,n) 生成 n 个点。这些点的间距为 (x2-x1)/(n-1) 。 |
eye() | 单位矩阵 |
ones() | 全1矩阵 |
zeros() | 全0矩阵 |
diag() | D = diag(v) 返回包含主对角线上向量 v 的元素的对角矩阵 |
rand() | rand(n) 返回一个由均匀分布的随机数组成的 n ×n 矩阵(介于0-1之间) |
>> linspace(-1, 3, 4) % 生成4个元素,距离为(3-(-1))/(4-1)
ans =
-1.0000 0.3333 1.6667 3.0000
>> eye(3) % 单位矩阵
ans =
1 0 0
0 1 0
0 0 1
>> ones(4) % 全1矩阵
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> zeros(3) % 全0矩阵
ans =
0 0 0
0 0 0
0 0 0
>> a = [1 2 3 4 5] % 向量a
a =
1 2 3 4 5
>> diag(a) % 对角是向量a的矩阵
ans =
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
>> rand(5) % 介于0-1的5×5矩阵
ans =
0.8147 0.0975 0.1576 0.1419 0.6557
0.9058 0.2785 0.9706 0.4218 0.0357
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
5.矩阵与矩阵,矩阵与实数的运算
A + a | A + B |
A / a | A * B |
A ./ a | A .* B |
A^a | A / B |
A.^a | A ./ B |
A' |
>> A = [1 2 3; 4 5 4; 9 8 7]
A =
1 2 3
4 5 4
9 8 7
>> B = [3 3 3; 2 4 9; 1 3 1]
B =
3 3 3
2 4 9
1 3 1
>> A + B % 对应位置相加
ans =
4 5 6
6 9 13
10 11 8
>> A*B * 矩阵乘法
ans =
10 20 24
26 44 61
50 80 106
>> A.*B % 对应位置相乘
ans =
3 6 9
8 20 36
9 24 7
>> A/B % 相当于A*inv(B) inv(B)是B的逆
ans =
0.0714 0.2857 0.2143
1.1667 0 0.5000
3.2619 -0.2857 -0.2143
>> format rat % 也可以分数展示
>> A/B
ans =
1/14 2/7 3/14
7/6 0 1/2
137/42 -2/7 -3/14
>> A./B % 对应位置上的元素相除
ans =
1/3 2/3 1
2 5/4 4/9
9 8/3 7
>> format % 还原默认
>> a = 2
a =
2
>> A+a % A中各元素都加2
ans =
3 4 5
6 7 6
11 10 9
>> A/a % A中各元素都除2
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 2.0000
4.5000 4.0000 3.5000
>> A./a % A中各元素都除2与上面A/a效果一样
ans =
0.5000 1.0000 1.5000
2.0000 2.5000 2.0000
4.5000 4.0000 3.5000
>> A^a % a个A矩阵相乘
ans =
36 36 32
60 65 60
104 114 108
>> A.^a % A中各元素都开a次方
ans =
1 4 9
16 25 16
81 64 49
>> C = A' % 转置
C =
1 4 9
2 5 8
3 4 7
5.1矩阵相关函数
max(A) | sort(A) |
max(max(A)) | sortrows(A) |
min(A) | size(A) |
min(min(A)) | length(A) |
sum(A) | find(A) |
sum(sum(A)) | |
mean(A) |
>> A = [1 2 3; 0 5 6; 7 0 9]
A =
1 2 3
0 5 6
7 0 9
>> max(A) % 会把每一列中的最大值索引出来
ans =
7 5 9
>> max(max(A)) % 矩阵中最大的元素
ans =
9
>> min(A) % 会把每一列中的最小值索引出来
ans =
0 0 3
>> min(min(A)) % 不做解释
ans =
0
>> sum(A)% 每一列相加
ans =
8 7 18
>> sum(sum(A)) % 整个矩阵的元素和
ans =
33
>> mean(A) % 每一列的平均值
ans =
2.6667 2.3333 6.0000
>> format rat %分数形式
>> mean(A)
ans =
8/3 7/3 6
>> mean(mean(A)) % 对上面的进行求平均
ans =
11/3
>> format % 恢复默认
>> sort(A)%对每一列进行排序(升序)
ans =
0 0 3
1 2 6
7 5 9
>> sortrows(A)%对第一列进行排序,但是会带动所在行,就是说第一列1>0,此时会将1 0这两行进行调换.
ans =
0 5 6
1 2 3
7 0 9
>> B = [1 3 2;1 2 3; 2 3 4]
B =
1 3 2
1 2 3
2 3 4
>> sortrows(B) % 当第一列包含重复的元素时,sortrows 会根据下一列中的值进行排序,并对后续的相等值重复此行为,此时第一列中1 1相同,那么会比较第2列中的1 1所在行元素 3 > 2,所以会调换1 2两行
ans =
1 2 3
1 3 2
2 3 4
>> size(A) % 返回A的维度大小。 维度就是行和列
ans =
3 3
>> length(A) % 得到A的最大维度,行列中最大的那个
ans =
3
>> C= zeros(2, 6) % 事例
C =
0 0 0 0 0 0
0 0 0 0 0 0
>> length(C) % 不管是2行6列还是6行2列length都是6即最大维度
ans =
6
>> C = zeros(6, 2) % 事例
C =
0 0
0 0
0 0
0 0
0 0
0 0
>> length(C) % 不管是2行6列还是6行2列length都是6即最大维度
ans =
6
>> find(A == 5) % 返回A中5的索引,索引是按照列的标号来的,详见4.5节
ans =
5
>> find(A == 0) % 多个相同的元素的索引号都会显示出来
ans =
2
6