• 写在前面:这是我学习MATLAB时的笔记,最开始的时候写在了幕布mubu.com上,后来导出成文档,然后重新写在了博客上。由于幕布的排版形式与普通的word不同,从原先的笔记导出然后写成博客,文档的排版变得比较乱,这个以后会进行一定规模的调整的。 另外,我所学习的课程总共有十个专题,目前只整理出了一个专题,后面还有很多没有学完,以后有时间再更新。
  • MATLAB简介:MATLAB全拼为Matrix Laboratory,是现如今科学领域研究中必不可少的一个工具,也是许多研究生入学前必会的一个技能,各种学科竞赛也十分有用。马特拉博大神让众多研究生拿到了文凭。
  • 附MATLAB中南大学MOOC教程链接:https://www.icourse163.org/learn/CSU-1002475002?tid=1206743216#/learn/announce 



  • 专题0-1-课程导入

  • “计算”的含义,即数的加减、乘、除、乘方、开方等数学运算。

  • 较复杂的运算,即根据未知量求出已知量。

  • 课程的学习目标

    • 要求理解MATLAB功能实现的数学背景与算法原理。
    • 掌握利用MATLAB进行问题求解的基本规律。
    • 能够使用MATLAB作为专业应用的工具。
  • 课程的主要内容

    • 专题一 MATLAB基础知识
    • 专题二 MATLAB矩阵处理
    • 专题三 MATLAB程序流程控制
    • 专题四 MATLAB绘图
    • 专题五 数据分析与多项式计算
    • 专题六 数值微积分与方程求解
    • 专题七 MATLAB符号计算
    • 专题八 MATLAB图形用户界面设计
    • 专题九 Simulink系统仿真
    • 专题十 外部程序接口
  • 专题1-1-MATLAB系统环境

    • MATLAB操作界面的组成

      • (1)MATLAB主窗口
      • (2)命令行窗口
      • (3)当前文件夹窗口
      • (4)工作区窗口
    • MATLAB的搜索路径

      • 变量→内部函数→程序文件(当前文件夹下的程序文件→文件搜索路径文件夹中的程序文件)
      • 如何设置文件搜索路径
        • >> path(path,’e:\work’)
        • 用对话框设置文件搜索路径
  • 专题1-2-MATLAB数值数据类型

    • MATLAB数值类型的分类

      • 整型

        • 无符号8位整数数据范围:00000000~11111111(0~2^8-1)。
        • 带符号8位整数数据范围:10000000~01111111(-2^7~2^7-1)。
        • uint8函数将数值数据转化为无符号8位整数。
        • int8函数将数值数据转化为带符号8位整数。
      • 浮点型

        • 单精度型 4个字节 single函数:将其他类型的数据转换为单精度型
        • 双精度型 8个字节 double函数:将其他类型的数据转换为双精度型
      • 复型

        • 包括实部和虚部两个部分,实部和虚部默认为双精度型,虚数单位用i和j来表示。
        • real函数:求复数的实部
        • imag函数:求复数的虚部
      • 数值数据的输出格式

        • format格式符
          • format long
          • format short
          • format (回到默认输出格式)
        • format命令只影响数据输出格式,而不影响数据的计算和存储。
  • 常用数学函数

    • (1)函数的调用格式为

      • 函数名(自变量的值)
      • 函数的自变量规定为矩阵变量,当然也可以是标量,标量本身是矩阵的一中特例。
      • 函数在运算时是将函数逐帧作用于矩阵的每个元素上,所以最后运算的结果就是一个与自变量同型的矩阵。
    • (2)常用函数的应用

      • 三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后加“d”,以示区别。
      • abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。
      • 用于取整的函数有fix、flour、ceil、round。
        • round函数按照四舍五入的规则取整。
        • ceil函数是向上取整,取大于等于这个数的第一个整数。
        • floor函数是向下取整,取小于等于这个数的第一个整数。
        • fix函数是固定取靠近0的那个整数,即舍去小数取整。
      • 函数应用举例。
        • 分别求一个三位正整数的个位数字、十位数字和百位数字。(rem函数求余)
          • >>m=345;
          • >>m1=rem(m,10)
          • m1=
          • 5
          • >>m2=rem(fix(m/10),10)
          • m2=
          • 4
          • m3=fix(m/100)
          • m3=
          • 3
        • 求[1,100]区间的所有素数。
          • MATLAB提供了一个判断n是否是素数的函数isprime(n),当n是素数返回1,否则返回0。find函数查询非零元素的位置。
          • >>x=1:100;
          • >>k=isprime(x);
          • >>k1=find(k);
          • >>p=x(k1)
  • 专题1-3-变量及其操作

    • 在高级语言中,只需要给每个内存单元取一个名字,然后通过这个名字就可以访问每个内存单元了。

    • 变量与赋值语句

      • 变量本质上讲是内存单元的一个抽象。
      • 在MATLAB中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。
      • 在MATLAB中,变量名区分字母的大小写。
      • 标准函数名以及命令名必须用小写字母。
    • 赋值语句两种格式:

      • 变量=表达式
      • 表达式
      • 举例
      • >>x=sqrt(7)-2i;
      • >>y=exp(pi/2);
      • >>z=(5+cosd(47))/(1+abs(x-y))
      • z=
      • 4395
    • 预定义变量

      • 预定义变量是由系统本身定义的变量。
        • ans是默认赋值变量
        • i和j代表虚数单位
        • pi代表圆周率
        • NaN代表非数
      • 变量的管理
        • (1)内存变量的删除与修改在工作区窗口进行 who与whos命令
        • (2)内存变量文件用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
          • save命令:创建内存变量文件。
          • load命令:装入内存变量文件。
          • >>save mydata a x
          • >>load mydata
  • 专题1-4-MATLAB矩阵的表示

    • 矩阵的建立

      • (1)利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。
      • (2)利用已经建好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。
      • 可以由实部矩阵和虚部矩阵构成复数矩阵。
      • 冒号表达式
        • 格式:e1:e2:e3 初始值步长终止值 e2可以不写,省略e2则表示步长为1
        • linspace函数:linspace(a,b,n)第一个元素最后一个元素元素总数当n省略时,自动产生100个元素。
      • 结构矩阵和单元矩阵
        • (1)结构矩阵
          • 格式为:
          • 结构矩阵元素.成员名=表达式
        • (2)单元矩阵
        • 建立单元矩阵和一般矩阵相似,直接输入就可以了,只是单元矩阵元素用大括号括起来。
  • 专题1-5-矩阵元素的引用

    • 矩阵元素的引用方式

      • (1)通过下标来引用矩阵的元素 A(3,2)表示A矩阵第3行第2列的元素。
      • (2)通过序号来引用
        • 在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。
        • 矩阵元素的序号就是矩阵元素在内存中的排列顺序。
        • 序号与下标是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)×m+i。
        • 矩阵元素的序号与下标可以利用sub2ind和ind2sub函数实现相互转换。
          • sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。调用格式为:D=sub2ind(S,I,J) (行数和列数组成的向量,转换矩阵元素的行下标,转换矩阵元素的列下标)
          • ind2sub函数:将把矩阵元素的序号转换成对应的下标,其调用格式为:[I,J]=ind2sub(S,D) (行下标,列下标,行数和列数组成的向量,序号)
        • 利用冒号表达式获得子矩阵
          • 子矩阵是指由矩阵中的一部分元素构成的矩阵。
            • A(i,:) A(:,j) A(i:i+m,k:k+m) A(i:i+m,:)
          • end表示某一维的末尾元素下标
        • 利用空矩阵删除矩阵的元素
          • 空矩阵是指没有任何元素的矩阵。
        • 改变矩阵的形状
          • reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排列成m×n的二维矩阵。
            • 注意:reshape函数只改变原矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。
          • A(:):将矩阵A的每一列元素堆叠起来,成为一个列向量。
  • 专题1-6-MATLAB基本运算

    • (1)基本算数运算+-*\/

      • 乘方运算一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
    • (2)点运算

      • 点运算符.*、./、.\、.^
      • 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。
    • 关系运算 < > <= >= ~=

      • 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。
      • 当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
      • 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
    • 逻辑运算

      • & | ~
      • 若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量元素逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由0或1组成。
      • 若参与逻辑运算的是一个标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由0或1组成。、
  • 专题1-7-字符串处理

    • 字符串的表示

      • 在MATLAB中,字符串是用单引号括起来的字符序列。
      • 若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
      • 建立多行字符串,形成字符串矩阵。
    • 字符串的操作

      • (1)字符串的执行
      • (2)字符串与数值之间的转换
        • abs函数和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
        • char函数可以把ASCII码矩阵转换为字符串矩阵。