MatLab之数组篇
小记:MatLab中一般是写一条运行一条,会直接出结果在窗口上,若要不显示则在语句后加上分号< ; >
想写几串就直接在语句后面< ; >后接着写就是了。
一些基础知识
预定义变量
注:优先级低于被定义的变量,例如定义i = 1,则之后的i都为1,无法作为虚数单位

数据类型
注:在MATLAB中可以直接输入一个值,它会直接被赋给ans,即answer
约位
ceil(): 向上取整floor(): 向下取整round(): 四舍五入fix():去除小数部分
复数及其运算
用 i 和 j 都可以表示虚数单位,函数:
获取实部 real(),虚部 imag(),辐角主值 angle(), 模 abs(),共轭 conj()
数组创建
一维数组创建
行向量创建
(1) 逐一输入:用方括号“[ ]”操作符,所有向量元素必须在“[ ]”之内;用空格或逗点< , >隔开。
(2) 用冒号< : >操作符
格式:x= 首 : 步长值 : 尾
- 等差数列,起始为首
1 | >> x=1:5 |
(3) 利用函数linspace
x=linspace(首 , 尾 , 元素个数)
- 元素个数不写则默认为100
1 | >> x = linspace(10,5,6) |
列向量创建
- 在行向量后加转置符号
',注意转置符号包括转置+共轭(即复数变成其共轭),因此.'用来完成单纯的转置。
二维数组创建
手搓法 :行内元素用空格隔开,行之间用分号< ; >隔开。
函数法 :
ones(i,j)——生成 i 行 j 列的全1矩阵 eg. ones(3)=ones(3,3)zeros()——生成全0矩阵reshape(a,i,j)——把 a 重塑成 i 行 j 列的矩阵,元素个数不变,数组元素从上到下按列排列eye()——产生单位矩阵magic()——产生魔方阵,即每行每列和对角线的和都相等rand()——产生0~1间均匀分布的随机矩阵randn()——产生均值为0,方差为1的标准正态分布随机矩阵diag(A)——若A是一个m个元素的向量,则产生一个m×m的对角阵,其对角元为A的各元素 若A是m×m矩阵,则产生一个m维列向量,由A的对角元组成
diag(A,k)——结果体现在第k条对角线(k为正则向上数,反之)
三维数组创建
- 直接法:分别输入三维数组的每一层的数,组合成一个三维的
1 | >>a(:,:,1) = [1 2 3]; |
cat拼接法:利用cat函数把两个同阶级的二维数组按顺序拼接成三维数组
eg. cat(3,A,B)
有用的空数组
有一维是0的数组,所以空数组不全是0
空数组不占据存储空间
0x0 ,0x5 ,10x0
用于删除矩阵的某一行或列
1
2
3
4
5
6
7
8
9A =
9 1 7 0
4 4 9 8
8 9 6 9
>> A(:,[2 4])=[]
A =
9 7
4 9
8 6上面可以看到我们先选中A的所有行,再选中第2和第4列,将他们变成空数组,即删除这两列。
1
2
3
4
5
6
7
8
9
10A =
7 1 5 6 1
7 1 2 8 2
2 4 7 9 8
6 9 2 5 2
6 3 5 1 8
>> A(1:3,:)=[]
A =
6 9 2 5 2
6 3 5 1 8上面可以看到我们先选中了1~3行,再选中其中所有列,进行删除。
数组的运算
(前加点的即为矩阵的对应各个元素进行单独运算)
| 运算 | 运算符 | 含义说明 |
|---|---|---|
| 加 | + | 对应元素相加 |
| 减 | - | 对应元素相减 |
| 乘 | * | 正常矩阵乘法 |
| 点乘 | .* | 对应元素相乘(阶数相同) |
| 幂 | ^ | 正常矩阵幂运算 |
| 点幂 | .^ | 每个元素各自幂运算 |
| 左除或右除 | \ 或 / | 矩阵相除,一般A/B≠B\A,毕竟矩阵乘法不满足交换律 |
| 左点除或右点除 | .\ 或 ./ | 矩阵对应元素相除 |
注意:若矩阵与单个数(即标量)进行加减运算时,是每个元素都与这个数加减,因为在MATLAB中没有单位矩阵E的定义
1 | A = |
关系运算
< >= <= == ~=(不等于)
1、两个数比较时,直接比,成立为1,不成立为0
2、维数相等矩阵比较,对应位置数比较,并在对应位置得到结果,最后组成一个维数相等的0、1矩阵
3、矩阵与数比较时,矩阵各个元素与这个数比较,并在各自位置得到结果,得到0、1矩阵
逻辑运算
&(与)、 |(或)、 ~(非)
数据统计与处理
一维向量
y=max(x):求向量x的最大值,若有复数则按模取最大[y,l]=max(x):求向量x的最大值及其该元素的位置(位置永远是从上向下的位置)max(A):得到一个行向量,由A的每列的最大值对应组成[Y,U]=max(A):得到行向量Y和U,Y由每列最大值组成,U由每列最大值的行号组成max(A,[ ],dim):dim=1或2。dim=1时,与max(A)相同;dim=2时,得到一个列向量,由每行最大值组成
求和:sum(A)——得到行向量,由每列的和组成
求积:prod(A)——得到行向量,由每列的积组成
求中值:median(A)——得到行向量,由每列的中值组成
二维矩阵
1 | a = max(X) # 求最大值,当a是矩阵时,每列求最大 |
max(A,B)指的是同型矩阵A和B对应元素最大值组成的新矩阵,因此我们可以用max(A , [ ] , 2)来求出A每行的最大值
1 | mean(X) % 每列均值 |
- 排序
1 | sort(A,dim,method) % dim默认为1按列,为2时按行,method默认为升序'ascend' |
sum(),prod():求和,求积同上
cumsum(),cumprod():累加累乘用法同上,效果就是后面的加上前面的总和
多项式
- 创建
1 | a = [1,2,3,4] # 相当于𝑥^3+2𝑥^2+3𝑥+4,计算时用a |
- 代入求值
1 | y = polyval(a,代入的值) # 值可以是具体数字也可以是变量,若是矩阵则每个元素都代入算一遍 |
- 求根
1 | r = roots(a) # 在复数域上求根,得到一个矩阵(几元方程就有几个根) |