命令行(Command Line)
1. help
- 格式:help 命令
2. cd
- 配合 Tab 使用
- pwd: print current working directory,打印当前工作路径
cd .. 返回上一级目录 cd / 返回当前磁盘根目录 WD = cd 将当前路径作为一个字符串返回 3. ls (dir)
- 配合 通配符 使用
例子 含义 ls *my* List all the files and folders with names that contain my
ls *.m List all the files and folders with a .m extension MyList = ls
Save a list of the names of all the files and folders in the current folder to the variable MyList
4. mkdir 和 rmdir
- mkdir:创建文件夹
- rmdir:删除文件夹
5. clear, clc
- clear:清楚工作空间中的所有变量
- clear all:清楚工作空间所有变量和函数
- clear 变量名:清楚指定的变量
- clc:清屏
6. which, what, who, whos
- which 文件名:查找指定文件的路径
- what:列出当前目录下的 .m文件和 .mat文件
- who:显示当前工作空间中的所有变量
- whos:显示当前工作空间中的所有变量的详细信息
7. load, save
- load 文件名:将文件中所有变量加载到工作空间
- load 文件名 x y:将文件中变量 x, y 加载到工作空间
- save 文件名:将工作空间的变量保存到文件 文件名.mat
- save 文件名 x y:将工作空间的变量 x, y 保存到文件 文件名.mat
8. path
- 显示全部的搜索路径:path
- 设置文件搜索路径:path(path, \'e:\work\')
- 文件搜索路径顺序:当前文件夹 >> 文件搜索路径
运算符(Operator)
1. 算术运算符
- +,-,*,/,^次幂
函数 运算法则 exp(x) 求以e为底数的x次幂 log(x) 以e为底数对x取对数 log10(x) 以10为底数对x取对数 sqrt(x) x的平方根 sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) mod(a,b) a与b相除取余数 min(a,b) max(a,b) mean(x) median(x) 找出x阵列的中位数 sign(x) x<0,返回-1
x=0,返回0
x>0,返回1
rem(x,y) 返回x/y的余数 fft(x) x向量的离散傅里叶变换
2. 关系运算符
- 关系运算符可以用来比较两个数值、数组、矩阵或字符串等数据类型
- 关系运算符通过比较对应的元素,产生一个包含1和0的数值或矩阵
< > = <= >= ~= 不等于
3. 逻辑运算符
逻辑运算符或函数 说明 & 与 | 或 ~ 非 xor(x,y) 异或运算,x和y不同时,返回1;相同时,返回0 any(x) 向量x中,有任何元素是非零,返回1;否则返回0
矩阵x中的每一列有非零元素,返回1,否则返回0
all(x) 向量x中,所有元素是非零,返回1;否则返回0
矩阵x中的每一列所有元素非零,返回1,否则返回0
4. 运算符优先级
优先级 运算法则 1 () 2 转置和乘幂 3 加,减,逻辑非 ~ 4 乘 *,除 /,点乘 .*,点除 ./ 5 冒号运算 : 6 关系运算 7 逻辑与:& 8 逻辑或:||
Matlab 数据类型
1. 数值类型
- 整型
- int8, uint8, int16, uint16, int32, uint32, int64, uint64
- 无符号8位整数数据范围:00000000~11111111(0~28-1)
- 有符号8位整数数据范围:10000000~11111111(-27~27-1)
- 浮点型
- single - 单精度:在内存中占 4 个字节
- double - 双精度:在内存中占 8 个字节,MATLAB中默认的数据类型
- 复数型
- 默认使用 i 或 j 作为虚部标志
函数 说明 real(z) 返回复数 z 的实部 imag(z) 返回复数 z 的虚部 abs(z) 返回复数 z 的模 angle(z) 返回复数 z 的幅角 conj(z) 返回复数 z 的共轭复数 complex(a,b) 创建以 a 为实部,以 b 为虚部的复数
- 数值数据输出格式
- format 格式符
- format 后面若不跟格式符,则为默认输出格式
- 格式符:short, long, compact, loose等
2. 逻辑类型
- 概念
- 逻辑类型数据是指布尔类型数据及数据之间的逻辑关系
- 逻辑类型进行运算时,需用关系操作符和逻辑运算符
- 关系操作符:<,<=,>,>=,==,~=
- 逻辑运算符:&,|,~
- 逻辑函数:xor(x, y),异或;any(x)
- 测试函数:在运算过程中测试特殊值或条件是否存在,并返回相应的表示结果的逻辑值
函数 功能 isempty 参量为空,返回值 1 isglobal 参量为全局变量,返回值 1 isinf isletter ishold 当前绘图保持状态是“ON”,返回值 1 isspace isstr isreal
3. 字符与字符串a
- 概念
- 一个字符串是存储在一个行向量中的文本,每个元素代表一个字符,元素中存放的是字符的ASCII码
- 字符串是以向量的形式来存储的,可以通过下标进行索引
- 字符串一般是ASCII值得数值数组
- 一个字符串是由单引号括起来的简单文本,每个字符占8个字节
4. 函数句柄
- 概念
- 函数句柄提供了一种间接调用函数的方法
- 创建和调用
- 创建格式:Function_Handle = @Function_Filename;
- Function_Filename 是函数所对应的M文件的名称或MATLAB内部函数的名称
- @是句柄创建操作符
- Function_Filename 变量保存了函数句柄,并在后续的运算中作为数据流进行传递
- 调用
- 通过函数句柄调用函数,需指定函数的输入参数, Function_Handle(arg1, arg2, ... , argn)
- 若没有参数,直接跟圆括号,Function_Handle()
5. 结构体(Struct)
- 概念
- 结构体相当于一个数据容器,可以通过字段将多个相关联的不同类型的数据封装在一个结构体对象中
- 一个结构体可以有多个字段,每个字段又可以存储不同类型的数据
- 结构体创建方式
- 通过字段赋值创建
- 格式:结构体名称.字段名称
- 例:Student.Name = \'Tom\'; Student.Grade = 6;
- 通过 struct 函数创建
- 格式:变量名 = struct(\'field1\', var1, \'field2\', var2, ...)
6. 数组(Array)
- 概念
- 数组是按序排列的同类元素的集合
- MATLAB中,数组的数据类型是任意的,可以是数值、字符串、指针等
- 构建方式
- 直接对变量赋值来构建
- 冒号表达式
- A = i : k,创建从 i 开始,步长为1,到 k 结束的数字序列,数字 i 和 k 不必为整数
- A = i : j : k,创建从 i 开始,步长为 j,到 k 结束的数字序列,数字 i , j, k 不必为整数
- linspace 函数:和冒号表达式形式相近,但直接定义了数据的个数
- linspace(a, b, 100),在区间 [a, b] 上创建一个有100个元素的向量,线性分割
- 空数组:数组的元素个数为0
- 空数组是特殊的数组,不含任何元素
- 空数组主要用于逻辑运算、数组声明、数组额清空
- 构建方式:A = []
7. 元胞(Cell)数组
- 概念
- 元胞数组是一种无所不包的广义矩阵
- 组成元胞数组的每一个元素称为一个元胞
- 每一个元胞可以包括一个任意数值数组、字符串数组、结构体数组等
- 每一个元胞可以具有不同的尺寸和内存空间
- 构建方式
- 用赋值语句直接创建
- 用花括号创建,用逗号或空格分隔,用分号来分行
- C = {\'x\', [1;3;6]; 10}
- cell 函数创建
- C = cell(m, n),创建 mxn 的空元胞数组,每个单元均为空矩阵
- 元胞数组的内存空间是动态分配的,使用cell函数创建空元胞数组的目的是为该元胞数组预先分配连续的存储空间,以节约内存占用
- 元胞数组的索引
- 元胞外标识(Cell Indexing):C(m, n)指元胞数组中第m行,第n列的元胞
- 元胞内编址(Content Addressing):C{m, n}指元胞数组中第m行,第n列元胞的内容
- 元胞数组的操作
- 合并
- c = {a b},a 和 b 为两个元胞数组
- 删除元胞数组中的指定元胞
- 将空矩阵赋值给该单元
- 改变元胞数组的形状
- reshape 函数:reshape(C, M, N),将元胞数组C变成M行N列的新元胞数组
8. map容器
- 概念
- 相当于Python中的字典,是键(key)和值(value)的映射
- 值可以是任何类型
- map 属性
- Count,无符号64位整数,表示key/value对的总数,默认为0
- KeyType,字符串,表示map对象中包括的key类型,默认值char
- ValueType,字符串,表示map对象中包括的数据类型,默认值any
- 创建 map 对象
- 通过构造函数创建
- mapObj = containers.Map({key1, key2, ...}, {val1, val2, ...})
- 查看/读取 map 对象
- 查看
- keys函数
- values函数
- 读取
- 读取指定键(keyName)的对应值(valueName),valueName = mapName(keyName)
- 读取多个键的对应值,values(mapName, {\'keyName1\', \'keyName2\'})
- 编辑 map 对象
- 从map对象中删除 keys/values对
- remove(\'mapName\', \'keyName\')
- 添加 keys/values对象
- existingMapObj(newKeyName) = newValue
- 修改 keys
- 先删除键名和对应值,然后添加一个新条目
- 修改 values
- 通过赋值操作,mapName(keyName) = newValue
字符串
1. 字符串构造
- 字符串或字符串数组通过直接给变量赋值来构造,表达式中字符串的内容要在单引号内
- 字符串中若包含单引号,则再用一个单引号表示,如 \'I don\'\'t know\'
- 构造多行字符串,用 [] 时,字符串的长度必须相同;用 {} 表示,字符串的长度可以不同
- 同行逗号隔开;不同行用分号隔开
- Str = {\'July\', \'August\', \'September\'}
2. 字符串比较
- 通过关系运算符比较,A = (\'Hello\' == \'hello\')
- 注:使用关系运算符进行比较时,会对字符串的每个字符进行比较,返回值是一个与字符串长度相同大小的数组,被比较的两个字符串长度必须相同
- 通过 strcmp 函数比较,A = strcmp(\'Hello\', \'Hello\')
- 相同返回1,不同返回0
3. 字符串查找和替换
- 查找: findstr 函数
- 格式:findstr(变量名, \'字符\'),返回值为查找字符的索引值
- 大小写敏感
- 对字符串矩阵不起作用,只能通过循环索引矩阵内的元素进行搜索
- 替换
- 直接赋值替换
- 变量名(索引号) = \'替换字符\'
- 注:替换字符串的长度要和索引长度相同,不能替换不同长度的字符串
- strrep 函数
- 格式:strrep(变量名, \'要被替换的字符串\', \'替换字符串\')
- 可以替换任意长度的字符串
4. 字符串——数值转换
函数 功能 abs 字符串转换成ASCII setstr ASCII转换成字符串 str2mat 字符串转换成文本矩阵 num2str 数字转换成字符串 str2num 字符串转换成数字 lower 字符串转换成小写 upper 字符串转换成大写
矩阵
1. 矩阵和数组的概念
- 数组(Array):按序排列的同类数据元素的集合。这些元素可以是数值、字符、结构体等
- 矩阵是数学上的概念,数组是计算机程序设计领域的概念
- 在MATLAB中,矩阵是以数组的形式存在的,矩阵是数组的子集
- 一维数组为向量(Vector),包括行向量(Row Vector)和列向量(Column Vector)
- 二维数组为矩阵(Matrix)
2. 矩阵的构造
- 直接赋值构造
- 矩阵构造符号 []
- 同行元素用空格或逗号隔开
- 行与行之间用 ; 隔开
- 通过特殊函数构造
函数名称 函数功能 ones(n) 构建一个 nxn 的 1 矩阵 zeros(n) 构建一个 nxn 的 0 矩阵 eye(n) 构建一个 nxn 的单位矩阵 eye(m,n) 构建一个 mxn 的单位矩阵 magic(n) 构建一个 nxn 的矩阵,其每一行、每一列的元素之和都相等 rand(n) 构建一个 nxn 的矩阵,其元素为0~1之间分布的随机数 randn(n) 构建一个 nxn 的矩阵,其元素为零均值、单位方差的正态分布随机数
- 向量、标量和空矩阵
- 通常,矩阵包含 m 行和 n 列,若m = 1或n = 1,则为向量;若 m = n = 1,则为标量;若 m = n = 0,则为空矩阵
3. 矩阵的索引
- 单个矩阵元素索引
- 单下标索引,列元素优先,如4x4的矩阵,A(7)表示矩阵A中第3行第2列的元素
- 双下标索引,用二元数组进行索引,如A(2,3)
- 多个矩阵元素索引
- A([1 3], [1 3]),矩阵A第1行,第3行与第1列,第3列的交集
4. 矩阵操作
- 改变矩阵大小
- 矩阵合并,c = [a b];c = [a; b]
- 矩阵行列的删除,通过赋值 []
- 重构矩阵
- 转置, A\'
5. 矩阵元素的运算
- 加减运算
- 前提:行数和列数相同
- 满足交换律,结合律
- 乘法运算
- 数与矩阵相乘
- 矩阵与矩阵相乘
- 除法运算
- 左除 \,要求A和B的行数相等
- 右除 /,要求A和B的列数相等
- 幂运算 ^
6. 矩阵元素的操作
- 查找
- find()
- ind = find(A),查找矩阵A中的非零元素,返回单下标索引值
- ind = find(A>=1),查找矩阵中大于等于1的元素下标
- [row, col] = find(A),查找矩阵A中的非零元素,返回双下标索引值
- 排序
- sort(),升序排序,排序后的矩阵和原矩阵维数相同
- B = sort(A, dim),dim = 1时,按列进行排序;dim = 2时,按照行排序,默认dim = 1
- B = sort(A, mode),mode为ascend时升序,descend降序,默认升序
- 求和
- B = sum(A),对矩阵A按列求和,返回向量
- B = sum(A, dim),dim = 1,按列求和;dim = 2,按行求和,默认 dim = 1
- B = cumsum(A),返回矩阵
- A = [1 3 0;3 1 0;9 2 4]; B = cumsum(A);
- B = [1 3 0;4 4 0;13 6 4]
- B = cumsum(A, dim)
- 求积(用法与求和类似)
- B = prod(A)
- B = prod(A, dim)
- B = cumprod(A)
- B = cumprod(A, dim)
- 差分
- Y = diff(X),计算矩阵各列元素的差分
- Y = diff(X, n),计算矩阵各列元素的n阶差分
- Y = diff(X, n, dim)
7. 矩阵分析
矩阵分析函数 功能 norm(x,p) 求矩阵或向量的范数,默认(不带参数p)返回2阶范数, rank 矩阵的秩,即求对角元素的和 det 行列式 trace 矩阵的迹
变量
1. 变量命名
- Matlab中,变量不需要预先声明就可以进行赋值
- 命名规则
- 大小写敏感
- 必须以字母开头,其后可以是任意字母或下划线,但不能有空格、中文或标点
- 不能用关键字或函数名作为变量名
- 变量名最多可包含63个字符
2. 变量类型
- 局部变量
- 存储在函数独立的工作区中
- 全局变量
- 通常,全局变量的变量名用大写字母表示,并在函数体的开头位置进行定义
- 用global声明,如global X_val
- 永久变量
- 用persistent声明,只能在M文件函数中定义和使用
3. Matlab默认的特殊变量
特殊变量 描述 ans 系统默认的用作保存运算结果的变量名 pi 圆周率 eps 机器零阈值,MATLAB中最小值 inf 无穷大 NaN/nan 表示不定数 ……
4. 关键字
- 关键字是MATLAB程序设计中常用的流程控制变量,共有20个
- 命令行 iskeyword 命令可以查看
break case catch classdef continue else elseif end for function global if otherwise parfor persistent return spmd switch try while
5. MATLAB Calling Priority ( From high to low)
- Variable
- Built-in function
- Subfunction
- Private function:
- MEX-file
- p-file
- m-file
常用数学函数
1. 三角函数
- 以角度为单位时,函数名后面加 “d”
2. abs 函数
- 实数的绝对值
- 复数的模
- 字符串的ASCII码值
3. 取整函数
- round函数:按四舍五入规则取整
- ceil函数:向上取整,取 ≥ 这个数的第一个整数
- floor函数:向下取整,取 ≤ 这个数的第一个整数
- fix函数:固定取靠近0的那个整数,即舍去小数取整