写在前面
还有一个月就美赛了,本系列文章适用于完全没有任何 matlab 基础,但是有别的编程语言基础的人看,我会结合自己的理解,有的放矢的讲,不会掺杂很多废话,各位读者轻喷~
matlab 运算符
Matlab 运算符分五类:数学、关系,逻辑、位、集合运算符
数学运算符
其主要功能是进行各种数学运算,按其优先级别依次为:
- 转置
.’
、共轭转置'
、幂次.^
、矩阵幂次^
- 正、负号
+
、-
- 乘法
.*
、矩阵乘法*
、元素左右除.\
、./
、矩阵左右除\
、/
- 加减法
+
、-
- 冒号
:
在同一优先级中,运算自左至右完成,对运算顺序不确定时,最好以“()”实现强制运算顺序
对于矩阵,右除 A/B,相当于 X*B=A 的解矩阵,左除 AB,相当于 A*X=B 的解矩阵
关系运算符
有六种关系运算符:==
,~=
,>
,>=
,<
,<=
。关系运算符总是以矩阵内元素对元素做运算,若满足关系,则返回 1,不满足则返回 0
逻辑运算符
有三种:&
(与),|
(或),~
(非)
相关命令还有:all()
,any()
。当所有向量元素为 “真”,all 返回 1,而当任意元素为 “真”,any 即返回 1
示例:
位运算符
对非负整数进行位对位的逻辑运算,主要函数如下:
bitand()
:位对位 ANDbitor()
:位对位 ORbitxor()
:位对位异或bitset()
:设定某位bitget()
:取得某位bitcmp()
:位对位取反bitshift()
:位移(左移)
集合运算符
仅限于向量运算,此时 matlab 将向量视为集合来进行各种集合运算,常用命令如下:
Union()
:并集intersect()
:交集setdiff()
:差集setxor()
:异或unique()
:最小等效集合ismember()
:元素是否属于集合
数值精度
format short
:默认格式,小数点后保留 4 位format long
:有效数字 16 位format long e
:有效数字 16 位加 3 位指数format short e
:有效数字 5 位加 3 位指数format bank
:保留两位小数位format +
:只给出正负format rational
:以分数的形式表示format hex
:以 16 进制数表示format long g
:15 位有效数format short g
:5 位有效数
常用Keyword
clc
:清空命令行窗口clear
:清空工作区所有变量,clearx
:清空工作区中 x 变量who
:显示工作区所有变量Whos
:显示工作区所有变量的详细信息
矩阵
矩阵输入
行矩阵(Row vector)a = [1 2 3 4]
列矩阵(Column vector):b = [1;2;3;4]
索引向量(矩阵)
$$ A = \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right] $$
A(8) = 9
,编号是按照一列一列数下来
A([1 3 5]) = 1 31 17
A(3,2) = 2
,以逗号隔开的两个数字,前面表示行,后面表示列
替换矩阵值
A(x) = b
,等号左边是索引,首先索引到需要替换的位置,然后用右边的值去赋值(替换)
如果想要删掉某一行,格式:A(x,:) = []
如果想要删掉某一列,格式:A(:,x) = []
:
操作
如果要创建一个非常长的矩阵,例如从 1 到 1000,手动输入非常麻烦,这时就可以利用:
操作符
格式:A = [first:tolerance:end]
,从 first 开始,end 为结束,tolerance为公差创造一个等差向量(tolerance 默认值为 1)
:
操作符还有另一种用法,如果想取矩阵的某一行或者某一列,只需要A(x,:)
或者A(:,x)
矩阵合并操作
格式:F = [A B]
或 F = [A;B]
(这两种做法产生的结果是不一样的)
特殊矩阵
eye(n)
:n×n 的单位矩阵zeros(n1,n2)
:n1×n2 的矩阵,矩阵内元素全部为 0ones(n1,n2)
:n1×n2 的矩阵,矩阵内元素全部为 1diag([x1 x2 x3])
:主对角线为 x1,x2,x3 的矩阵linspace(a,b,n)
:生成一个 1×n 的矩阵,第一个元素值为 a,最后一个元素值为 b,共有 n 个数据rand(m,n)
:生成一个 m×n 阶的矩阵,矩阵内的值是 0-1 之间的随机值
常用矩阵函数
max(A)
:求出矩阵每一列中的最大值max(max(A))
:求出矩阵所有元素中的最大值min(A)
:求出矩阵每一列中的最小值min(min(A))
:求出矩阵所有元素中的最小值sum(A)
:计算矩阵每一列的和sum(sum(A))
:求出矩阵内所有元素的和mean(A)
:计算矩阵每一列的平均数mean(mean(A))
:求出矩阵内所有元素的平均数sort(A)
:将矩阵每一列元素从小到大进行排序sortrows(A)
:按照第一列中数值从小到大的顺序把每一行进行排序size(A)
:计算出矩阵有多少行多少列length(A)
:求出行数或者列数当中的较大值find(A,x)
求出满足条件的值x在矩阵当中的位置