我是一个MATLAB爱好者,这是我对MATLAB的第三次复习。这次,我选择B站作为自己的复习平台。因为B站不能传文件,所以干脆写一个专栏。哈哈。也算是再熟悉一遍吧。
因为MATLAB函数使用方法颇为复杂。每个函数仅写出了它的基本含义。具体细节还是要在MATLAB的帮助文档中实现。因为时间关系,没有给出使用的例子。不过,还是希望能为大家起到一个抛砖引玉的作用^_^
没有必要一次看完哈,喜欢的话可以收藏哦。
基本原则:
- 函数的基本使用方法是函数后面一个括号,如rand(3)等。有一些有特殊的用法。 但是用括号是绝对没有错的,也有可能可以用空格完成。(这点和python不一样)
- 一个数会被认为是一个1*1的矩阵。
- 一个向量会被认为是一个1*n的矩阵。
- 一个矩阵是MATLAB的最基本元素。
帮助:
- help:寻求MATLAB官方文档对一个函数的帮助。
- doc:打开帮助浏览器。
- lookfor:从帮助条目中搜索关键字。
- which:定位函数和文件。
- dir:列出文件夹的内容。
- cd:更改当前所在的路径。
- why:让MATLAB给出一些有趣的回答。
- who:列出工作区中的变量。
- whos:列出工作区中的变量及其大小和类型。
- what:列出文件夹中的MATLAB文件。
- exist:检查文件的存在情况。
基本数字运算:
- ans:上一个运行结果的默认变量名。
- pi:圆周率。
- eps:计算机中的最小数。
- inf:无穷大。
- NaN:不定值。
- i或j:虚数单位。
- nargin:输入的变量数目。
- nargout:输出的变量数目。
- realmax:MATLAB可以计算的最大的正实数。
- realmin:MATLAB可以计算的最小的正实数。
- int8:8位有符号整数类型。
- int16:16位有符号整数类型。
- int32:32位有符号整数类型。
- int64:64位有符号整数类型。
- uint8:8位无符号整数类型。
- uint16:16位无符号整数类型。
- uint32:32位无符号整数类型。
- uint64:64位无符号整数类型。
- single:单精度浮点数类型(32位)。
- double:双精度浮点数类型(64位)。(默认类型)
- round:四舍五入。
- fix:向绝对值小的方向取整。
- floor:往更小的数取整。
- ceil:往更大的数取整。
- complex:复数类型。
- real:复数的实部。
- imag:复数的虚部。
- abs:复数的模长。
- angle:复数的幅角。
- conj:复数的共轭复数。
有关逻辑运算
- true:真。
- false:假。
- logical:把数转换成逻辑类型。
- &(and):与
- |(or):或
- ~(not):非
- xor:异或
- any:任意
- all:所有
- ==(eq):等于
- ~=(nq):不等于
- <(lt):小于
- >(gt):大于
- <=(le):小于等于
- >=(ge):大于等于
关于字符串的基本操作
- strcmp:判断两个字符串是否相等。
- strcmpi:判断两个字符串不区分大小写是否相等。
- strncmp:判断两个字符串的前n个字符是否相等。
- strncmpi:判断两个字符串的前n个字符不区分大小写是否相等。
- findstr:从字符串中查找部分子串,返回其索引值。
- strfind:从字符串中查找部分子串,返回其索引值。
- strtok:查找字符串的分隔符。
- strmatch:查找匹配指定的字符串。
- strrep:替换字符串。
有关强制类型转换和进制转换
- char:数字到字符串(ASCII码)。
- int2str:整数到字符串(字符串的内容是数字)。
- num2str:数值到字符串(字符串的内容是数字)。
- mat2str:数值到字符串(字符串的内容是数字)。
- dec2hex:十进制到十六进制。(字符串)
- dec2bin:十进制到二进制。(字符串)
- dec2base:十进制到任意进制。(字符串)
- uintN:字符到数(ASCII码)。
- str2num:字符串到数字(字符串的内容是数字)。
- str2double:字符串到数字(字符串的内容是数字)。
- hex2num:十六进制到十进制。
- hex2dec:十六进制到十进制。
- bin2dec:二进制到十进制。
- base2dec:任意进制到十进制。
有关矩阵的尺寸
- size:求一个矩阵的尺寸。
- length:求一个矩阵的最长的边。
- numel:求一个矩阵有多少个元素。
- ndims:求一个矩阵有多少个维度(至少为2个)。
有关矩阵的构造和简单运算
- 简单的构造方法:中括号括起来、分号换行。
- 冒号表示等等差向量。
- linspace:构造一个确定首项和尾项的n个数的等差向量。
- logspace:构造一个确定首项和尾项的n个数的等比向量。
- rand:构造一个矩阵,每个值都是0~1均匀分布的随机数。
- randn:构造一个矩阵,每一个值都是服从标准正态分布的随机数。
- randi:构造一个矩阵,返回一个介于1和imax之间的伪随机整数。
- zeros:构造一个全部为0的矩阵。
- ones:构造一个全部为1的矩阵。
- eye:构造单位矩阵(主对角线为1)。
- gallery:构造测试矩阵。
- hadamard:构造哈达玛矩阵。
- hilb:构造希尔伯特矩阵。(行列式值非常小,高度病态矩阵)
- invhilb:构造希尔伯特矩阵的逆矩阵。
- rosser:构造经典对称性测试矩阵(Rosser矩阵)。 矩阵有如下的特点:有一个双精度特征值、三个几乎相等的特征值、 有异号占优特征值、有一个零特征值、一个非常小的非零特征值。
- wilkinson:构造wilkinson特征值测试矩阵。
- pascal:构造帕斯卡三角形(杨辉三角)。
- vander:范德蒙德矩阵。
- 矩阵的转置:普通转置(.')和共轭转置(')。
- 水平方向的拼接:C=[A,B]。
- 垂直方向的拼接:C=[A;B]。
- horzcat:水平方向矩阵的拼接。
- vertcat:垂直方向矩阵的拼接。
- cat:不同维度矩阵的拼接。
- repmat:对于现有的矩阵赋值和粘贴成一个新的矩阵。
- blkdiag:以对角阵的方式重组矩阵。
- 可以通过加索引的方式强行扩大矩阵的大小。
- 可以通过令一行或者一列的值为[]的方法把一行或者一列删掉。
- reshape:矩阵尺寸的重组。
- 面对一个较大的矩阵,可以通过预分配内存的方式可以大大减少MATLAB运算的复杂度。
- compan:构造一个矩阵的伴随矩阵。
- diag:通过列向量构造对角矩阵,或者是根据对角矩阵来求出列向量。
- randperm:随机置换一个包含从1到n之间的整数列表。
- magic:构造n阶魔方矩阵。
- 矩阵的加减乘除运算:乘除分为点乘、点除和乘法除法。其中点乘和点除指的是每一项与每一对应位置项的乘法和除法(类似于矩阵的加法和减法),乘和除指的是线性代数里面的乘法和除法。
- filpud:上下翻转。
- filplr:左右翻转。
- filp:按照不同维度的翻转。
- rot90:逆时针旋转90度。
- sum:矩阵数组元素的累加和。
- prod:矩阵数组元素的累乘积。
寻访矩阵的元素
- 双下标。从1开始,先行后列。(subscript)
- 单下标(和计算机的内存相关):从上到下、从左到右的方向排列。(index)
- sub2ind:双下标到单下标。
- ind2sub:单下标到双下标。
寻访矩阵中的多个元素:
- A(:,j):访问二维矩阵中的第 j 列元素。
- A(i,:):访问二维矩阵中的第 i 行元素。
- A(:,j:k):访问二维矩阵中第 j 到第 k 列元素。
- A(i:l,j:k):访问二维矩阵中从第 i 到第 l 行,第 j 到第 k 列的元素。
- A(:,:):返回矩阵 A 本身。
- A(:):将矩阵 A 本身的每一列都合并成一个长的列向量。
- A(j:k):返回一个行向量,其中的元素为 A(:)从第j到第k个元素。
- A([j1,j2,…,jn]):返回一个行向量。分别是第 j1,j2,…,jn 个元素。
- A(:,[j1,j2,…,jn]):返回一个小的矩阵,每一行还是和原本的矩阵一样, 第 1,2,…,n 列分别是第 j1,j2,…,jn 列元素。
- A([j1,j2,…,jn],:):返回一个小的矩阵,每一列还是和原本的矩阵一样, 第 1,2,…,n 行分别是第 j1,j2,…,jn 行元素。
- A([j1,j2,…,jn],[k1,k2, …,km]):返回一个小的矩阵,返回的是第 [j1,j2,…,jn]行,第[k1,k2, …,km]列元素组成的矩阵。
一些布尔型函数
- isempty:判断一个矩阵是否空矩阵。
- isscalar:判断一个矩阵是否为标量。
- isvector:判断一个矩阵是否为向量。
- issparse:判断一个矩阵是否为稀疏矩阵。
- isa:判断一个矩阵是否为指定的数组类型。
- iscell:判断一个矩阵是否为稀疏矩阵。
- iscellstr:判断一个矩阵是否为指定的数组类型。
- ischar:判断一个矩阵是否为指定的数据类型。
- isfloat:判断输入数据是否为字符类型。
- isinteger:判断输入数据是否为整数类型。
- islogical:判断输入数据是否为逻辑类型。
- isnumeric:判断输入数据是否为数值类型。
- isreal:判断输入数据是否为实数类型。
- isstruct:判断输入数据是否为结构体类型。
关于稀疏矩阵
- 有些矩阵有很多0,占用很多内存是没必要的。只需要存储非0的数据。如果有大量0的 数据,可以省去一些内存。稀疏矩阵的类型是sparse而不是matrix。
- sparse:创建稀疏矩阵。
- speye:创建单位稀疏矩阵。
- sprand:创建与原稀疏矩阵基于相同结构的0~1均匀分布稀疏矩阵。
- sprandn:创建与原稀疏矩阵具有相同结构的标准正态分布稀疏矩阵。
- sprandsym:生成随机对称稀疏矩阵。
- spdiags:关于对角线的稀疏矩阵。
- nnz:返回一个稀疏矩阵里面的非0元素个数。(也可以是非稀疏矩阵)
- nonzeros:返回稀疏矩阵中由非0元素构成的列向量。
- find:返回稀疏矩阵中非零元素构成的集合。
- nzmax:返回稀疏矩阵中非零元素的存储总量。(非零元素分配的存储单元数)
- spalloc:建立一个全部是 0 的,大小为 m×n 的稀疏矩阵。 其中为非零元素保留的空间为 nzmax。然后逐列生成这个矩阵,用非零值代 替零。不必重复地分配存储空间。
- spy:用图形化的方式显示稀疏矩阵S元素的分布情况。
- squeeze:删除高维数组中大小为1的维。
- shiftdim:移动高维数组的维度。
- permute:根据某个顺序重新排列数组的维度。