/ 写在前面 – 我热爱技术、热爱开源。我也相信开源能使技术变得更好、共享能使知识传播得更远。但是开源并不意味着某些商业机构/个人可以为了自身的利益而一味地索取,甚至直接剽窃大家曾为之辛勤付出的知识成果,所以本文未经允许,不得转载,谢谢/


MATLAB入门

MATLAB允许一行输入多个命令,此时可以用逗号 , 和分号 ; 来实现,区别在于使用逗号将会显示运行结果,而使用分号将隐藏运行结果。需要多行同时连续输入时,可用 Shift + Enter 来实现。

MATLAB中的冒号表达式:start:step:end,其中start为初值,step为步长(如果不指定,则默认step=1),end为终止值。在冒号表达式中,参数end表示结尾。

在MATLAB中,第一个元素的下标是1,而不是0

MATLAB帮助系统

  1. 输入指令helpwin可以启动帮助窗口。
  2. 输入docmesh()可以查看mesh()函数的帮助信息。
  3. 输入helpinv可以查看矩阵求逆函数inv()函数的用法,注意,help命令要求函数名的精确匹配。
  4. 输入lookforkeyword可以按照关键字进行匹配查询。

MATLAB中的数据类型

大部分情况下,MATLAB的数据都是以双精度数值来表示,不区分整数、实数、复数等,占8个字节(64位),MATLAB表示为double(),其值域约为-1.7e308~1.7e308

复数的表达形式:(注意,不加*会出错)

  • z = a + b*i
  • z = r*exp(i*θ),其中r为复数的模,θ为复数辐角的弧度数

语句i=sqrt(-1)可以恢复i虚数单位的意义,如果涉及复数计算,应尽量避免将ij作为用户定义的变量使用。

对于MATLAB中的多维数组操作自己不是很理解,关于符号型数据、元胞数组自己暂时也不是很理解……

  1. % MATLAB中的常量
  2. 常量名 用法
  3. ------- -------
  4. pi 圆周率
  5. eps 机器的浮点运算误差限,2.2204e-016,若|x|<eps,则可以认为x=0
  6. i, j 虚数单位
  7. nargin m函数入口参数变量,用于m函数程序设计
  8. nargout m函数出口参数变量,用于m函数程序设计
  9. realmin 最小的正浮点数2.2251e-308
  10. realmax 最大的正浮点数1.7977e+308
  11. bitmax 最大的正整数9.0072e+015
  12. Inf Infinity,无穷大量+∞
  13. NaN Not-a-Number,通常由0/0运算、Inf/Inf运算或者其他可能的运算得出
  14. ans 默认结果存储变量

MATLAB中的矩阵

以直接输入的方式生成矩阵

在MATLAB中输入小矩阵最简单的方法是使用直接排列的形式,且遵循如下规则:

  1. 矩阵元素必须在[]内。
  2. 矩阵的同行元素之间用空格(或,)隔开。
  3. 矩阵的行与行之间用;(或回车符)隔开。
  4. 矩阵的元素可以是数值、变量、表达式或函数。

以命令行语句或函数方式生成矩阵

  1. 利用冒号表达式可以生成一个行向量。一般格式为Vec=start:step:end,其中start为初值,step为步长(如果不指定,则默认step=1),end为终止值。
  2. linspace()生成线性等间距格式行向量。调用格式为linspace(start,end,num),其中startend是生成向量的第一个和最后一个元素,num是元素总数。
  3. logspace()生成等比格式行向量。Vec=logspace(start,end,num)创建从MATLAB语言基础 - 图1开始、到MATLAB语言基础 - 图2结束、有num个元素的对数分隔行向量Vec。如果不指定num的值,则默认num=50
  4. ones()函数生成全1矩阵。ones(n)生成MATLAB语言基础 - 图3维的全1矩阵,ones(m,n)生成MATLAB语言基础 - 图4维的全1矩阵,ones(m,n,p,...)生成MATLAB语言基础 - 图5维的全1矩阵。
  5. zeros()函数生成全0矩阵。用法与ones()同理。
  6. eye()函数生成单位阵。单位阵即对角线元素为1,其余元素为0的矩阵。eye(n)生成MATLAB语言基础 - 图6维的单位阵。
  7. rand()函数生成随机矩阵,生成矩阵元素满足在MATLAB语言基础 - 图7区间内的均匀分布。用法与ones()同理。
  8. randn()函数生成随机矩阵,矩阵元素满足均值为0,方差为1的标准正态分布。用法与ones()同理。
  9. randperm(n)函数产生一个MATLAB语言基础 - 图8的随机序列。例如randperm(5)产生3 5 1 2 4的序列,不同时间产生的序列不同。

矩阵的访问

先介绍向量的访问:

  1. 向量的下标访问:Vec(i)表示向量Vec中的第i个元素。
  2. 向量的冒号表达式访问:Vec(2:4)表示向量Vec中的第2个至第4个元素。
  3. 向量的中括号方式访问:向量可以用中括号方式指定多个向量元素进行访问。Vec([1 3 4])表示访问向量Vec中的第1、3、4个元素,亦可用Vec([1,3,4])来表示。

对于矩阵元素的访问和修改同向量类似,不过在使用下标时一般使用二维的,即A(i,j),表示A中第i行、第j、列的元素(虽然一维下标也可以,但是二维的更为直观)。

另外,矩阵还有几个常用函数:

  1. size(A):返回矩阵A各方向的长度。
  2. size(A,dim):返回第dim维的长度。
  3. length(A):返回矩阵A各方向的最大长度。
  4. ndims(A):返回矩阵A的维数。
  5. numel(A):返回矩阵A的元素个数。

矩阵的拆分和提取

在矩阵的拆分中,最常用的方法是利用冒号表达式获得子矩阵。一般用法为:

  1. A(:,j):表示Aj列的全部元素。
  2. A(i,:):表示Ai行的全部元素。
  3. A(i:i+m,:):表示取A矩阵第i~i+m行的全部元素。
  4. A(:,k:k+m):表示取A矩阵第k~k+m列的全部元素。
  5. A(i:i+m,k:k+m):表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。

在MATLAB中,定义 [] 为空矩阵。注意,A=[]clear A不同,clear是将 A 从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。因此可以利用空矩阵来删除矩阵中的元素。

矩阵的扩展

  1. 空扩展,见如下代码:

    1. >> A=[11,12;21,22]
    2. A =
    3. 11 12
    4. 21 22
    5. >> B(2:3,2:3)=A% 对于B中原先并不存在元素,MATLAB自动补0
    6. B =
    7. 0 0 0
    8. 0 11 12
    9. 0 21 22
  2. , 进行行拼接注意其行数相同,见如下代码:

    1. >> A=[11,12;21,22], B=[13,14;23,24]
    2. A =
    3. 11 12
    4. 21 22
    5. B =
    6. 13 14
    7. 23 24
    8. >> C=[A,B]% 行拼接
    9. C =
    10. 11 12 13 14
    11. 21 22 23 24
  3. ; 进行列拼接注意其列数相同,见如下代码:

    1. >> A=[11,12;21,22], B=[31,32;41,42]
    2. A =
    3. 11 12
    4. 21 22
    5. B =
    6. 31 32
    7. 41 42
    8. >> C=[A;B]% 列拼接
    9. C =
    10. 11 12
    11. 21 22
    12. 31 32
    13. 41 42

符号运算

符号表达式的化简

因式分解

符号微积分

关系与逻辑运算

MATLAB中的关系运算符有: <<=>>===~= 不等于。关系运算符的运算法则为:若关系成立,关系表达式的结果为1,否则为0。

MATLAB中的逻辑运算符有: & 与、 | 或、 ~ 非。0的逻辑量为“假”,而任意非零数的逻辑量为“真”

MATLAB中的矩阵运算

MATLAB中的图形功能

MATLAB工具箱的使用