关于工具:matlab使用

6次阅读

共计 16753 个字符,预计需要花费 42 分钟才能阅读完成。

写在后面的话
文章内容较多,是自己的课程笔记
原课链接:
https://www.bilibili.com/vide…
内容以课堂 ppt 上内容为主,并没有记录课堂例子
大家能够当作字典来用


提醒:ctrl+ F 能够进行浏览器页面的查找


专题一 课程导入

1.1.1 课程导入

专题二 MATLAB 基础知识

2.1.1MATLAB 零碎环境
  1. 反对这个操作

    cd 文件目录 % 进入指定文件门路
  2. 命令行窗口创立的变量能够在工作区窗口查看其值

    也能够在工作区对变量进行操作和解决

  3. matlab 的搜寻门路

    先变量名,再外部函数名,最初程序文件(先以后,后指定)

    申请的变量可能会笼罩掉某些函数名或程序文件

  4. 设置文件搜寻门路

    1. 用 path 命令设置文件的搜寻门路
    path(path,'门路') % 设置文件的搜寻门路
    1. 用对话框设置文件的搜寻门路

      主页 \(\rightarrow\)设置门路

2.2.1MATLAB 数值数据
  1. 数据类型(和 C 相通)

    1. 整型

      1. 分类:

        无符号整数:无符号 8 位整型(int8)、无符号 16 位整型、无符号 32 位整型、无符号 64 位整型

        有符号整数:有符号 8 位整型(uint8)、有符号 16 位整型、有符号 32 位整型、有符号 64 位整型

        数据类型 变量名 = 数值 % 规定数据类型的赋值
      2. 超栈时返回该类型最大值
    2. 浮点型

      1. 分类:双精度浮点型(double)、单精度浮点型(single)
      2. 应用:

        single(变量名) % 转化为单精度浮点型
        double(变量名) % 转化为双精度浮点型
    3. 复型(复数型)

      1. 实部和虚部默认为双精度型
      2. 虚数单位 i 或者 j
      real(复型变量) % 求复数的实部
      imag(复型变量) % 求复数的虚部
  2. format 命令扭转输入格局

    format 输入格局 % 扭转输入格局
  3. 函数

    1. 函数的调用格局:

      函数名(函数自变量的值)% 函数的调用格局
    2. 罕用函数

      1. 三角函数分角度制和弧度制,应用角度值时须在函数名开端加 d
      2. 绝对值函数

        abs(变量名) % 求实数的绝对值、复数的模、字符串的 ASCLL 值
      3. 取整函数 fix、floor、ceil、round

        round(变量名) % 示意四舍五入的规定取整
        ceil(变量名) % 指向上取整
        floor(变量名) % 指向下取整
        fix(变量名) % 指舍去小数取整
      4. 判断是否是素数的函数

        isprime(变量名) % 当变量为素数时返回 1,反之返回 0 
2.3.1 变量及其操作
  1. 命名规定

    C 语言的命名规定,但 matlab 最多辨认 63 个字符

  2. matlab 规范函数名和命令名都是小写

    赋值语句后加分号,只执行操作,不显示后果

    NaN % 示意非数
    ans % 默认赋值变量
    pi % 圆周率
  3. 变量的治理

    1. 内存变量的删除和批改

      who % 输入已有的变量名
      whos % 输入一张对于变量信息的表
    2. 内存变量文件(.mat)

      save 文件名 变量名 1 变量名 2 ··· % 创立内存变量文件
      load 文件名 % 加载内存变量文件
2.4.1MATLAB 矩阵的示意
  1. 矩阵的建设

    1. 间接输出:

      矩阵元素用中括号括起来,同行元素以逗号分隔,异行元素通过分号分隔

    2. 利用其余矩阵建设大矩阵:

      将其余矩阵当作元素

    3. 利用实部矩阵和虚部矩阵建设复数矩阵
  2. 向量的产生

    1. 冒号表达式

      初始值:步长:终止值
    2. linspace 函数:

      linspace(初始值,终止值,元素总数)
  3. 构造矩阵和单元矩阵

    1. 构造矩阵:

      构造矩阵元素. 成员名 = 表达式 % 构造矩阵的赋值
    2. 单元矩阵:

      矩阵的每个元素类型不肯定雷同,和个别矩阵的建设类似,但单元矩阵是由大括号括起来的

2.5.1 矩阵元素的援用
  1. 援用形式

    1. 通过下标援用矩阵元素
    2. 通过序号来援用

      matlab 中矩阵元素按列存储,矩阵的相对序号即矩阵在内存中的排列程序

      元素的存储序号 = sub2ind(矩阵的大小, 元素的行下标, 元素的列下标) % 将矩阵指定元素的行、列下标转换成存储的序号
      (元素的行下标, 元素的列下标) = ind2sub(矩阵大小, 元素的存储序号) % 将矩阵指定元素的存储序号转换成其行、列下标
    3. 利用冒号表达式援用子矩阵

      A(i,:) % 第 i 行的所有元素
      A(:,j) % 第 j 列的所有元素
      A(i:i+m,k:k+m) % 第 i~i+ m 行内且在 k~k+ m 列中的所有元素
      A(i:i+m,:) % 第 i~i+ m 行的所有元素
      end % 示意到开端
    4. 利用空矩阵删除矩阵中的元素

      空矩阵指没有任何元素的矩阵

    5. 扭转矩阵的形态

      reshape(原矩阵, 扭转后矩阵的行数, 扭转后矩阵的列数) % 在矩阵元素不扭转的状况下,将矩阵的元素重排,但元素的存储程序不扭转
    6. 转化为列向量

      A(:) % 将矩阵的元素重叠,造成一列列向量
2.6.1MATLAB 根本运算
  1. 算数运算

    1. 根本算数运算

      + % 加
      - % 减
      * % 乘
      / % 右除
      \ % 左除
      ^ % 乘方

      MATLAB 的算数运算是在矩阵意义下进行的

      单个数据的运算算是矩阵运算的特例

    2. 点运算

      两个矩阵的点运算指两个矩阵的对应元素进行相干运算

  2. 关系运算

    1. 关系运算符:
    < % 小于
    <= % 小于或等于
    > % 大于
    >= % 大于或等于
    == % 等于
    ~= % 不等于
    1. 规定:

      1. 两个标量的比拟间接比拟大小
      2. 矩阵的比拟是同下标元素间的比拟,并返回一个矩阵
      3. 标量与矩阵比拟是标量与矩阵每个元素间的比拟,后果为矩阵
  3. 逻辑运算

    1. 逻辑运算符:

      & % 与
      | % 或
      ~ % 非
    2. 规定:

      1. 标量间的运算(非 0 即为真)
      2. 矩阵之间的运算是逐元素的标量运算
      3. 矩阵与标量间的运算是矩阵的每个元素与标量间的标量运算
2.7.1 字符串解决
  1. 数据的分类

    数值型数据

    字符型数据

  2. 字符串的示意

    matlab 中,字符串是由单引号括起来的字符序列。

    字符串中的单引号字符要由两个单引号字符示意。

    也能够建设字符串矩阵。

    char(数值) % 将 ascll 码矩阵转化为对应的字符串矩阵
  3. 字符串的比拟

    1. 关系运算符比拟

      两个字符串里的每个字符顺次依照 ASCLL 值大小一一进行比拟,比拟的后果是个非 0 即 1 的数值向量

    2. 字符串比拟函数

      strcmp(s1,s2) % 比拟 s1 与 s2 是否相等
      strncmp(s1,s2) % 用于比拟两个字符串前 n 个字符是否相等
      strcmpi(s1,s2) % 在疏忽大小写的前提下,比拟两个字符串是否相等
      strncmpi(s1,s2) % 在疏忽大小写的前提下,比拟两个字符串前 n 个字符是否相等
    3. 字符串查找与替换

      finder(s1,s2) % 返回短字符串在长字符串中的开始地位
      strrep(s1,s2,s3) % 将字符串中的所有子串 s2 替换成字符串 s3

专题三 矩阵解决

3.1.1 非凡矩阵
  1. 矩阵函数
zeros() % 产生全 0 矩阵
ones() % 产生全 1 矩阵
eye() % 产生对角线为 1 的矩阵,当矩阵为方阵时,失去单位阵
rand() % 产生(0,1)区间均匀分布的随机矩阵
randn() % 产生均值为 0,方差为 1 的规范正太散布矩阵
% 单个数值 n 参数为产生你阶方阵
% 双参数 m,n 时示意产生 m * n 大小的矩阵
% 参数为 size(A)示意产生与 A 同样大小的矩阵
  1. 专门学科的非凡矩阵

    1. 魔方阵

      n 阶魔方阵由 [1,\(n^2\)] 共 \(n^2\)个元素组成,且每行、每列以及主、副对角线上的各 n 个元素之和都相等

    2. 范德蒙矩阵

      对于向量 \(v~=~[v_1,v_2,\dots,v_n]\),范德蒙矩阵的个别模式

    3. 希尔伯特矩阵
    4. 随同矩阵
    5. 帕斯卡矩阵
3.2.1 矩阵的变换
  1. 对角阵

    1. 对角矩阵:只有对角矩阵上有非零元素的矩阵

      数量矩阵:对角线上的元素相等的对角矩阵

    2. 提取对角阵的对角阵元素

      diag(矩阵) % 提取矩阵 A 主对角线元素,并产生一个列向量
      diag(A,k) % 提取矩阵 A 第 k 条对角线元素,并产生一个列向量
      % 主对角线为第零条对角线向上为正,向下为负
    3. 构建对角矩阵

      diag(V) % 产生以向量 V 为主对角线的对角阵
      diag(V,k) % 产生以向量 V 为第 k 条对角线的对角阵
  2. 三角阵

    1. 上三角阵:矩阵的对角线以下的元素全是 0 的矩阵

      下三角阵:矩阵的对角线以上的元素全是 0 的矩阵

    2. 函数

      triu(A) % 提取 A 的主对角线及以上元素
      triu(A,k) % 提取 A 的第 k 条对角线及以上元素
      tril(A) % 提取 A 的主对角线及以下元素
      tril(A,k) % 提取 A 的第 k 条对角线及以下元素
  3. 矩阵的转置

    1. 转置运算符

      .'% 对矩阵转置' % 对矩阵转置后,对矩阵的每个元素取其复共轭
  4. 矩阵的旋转

    rot90(A,k) % 将矩阵 A 逆时针旋转 90°的 k 倍,k 为 1 时省略
  5. 矩阵的翻转

    fliplr(A) % 对矩阵 A 施行左右翻转
    flipud(A) % 对矩阵 A 施行高低翻转
  6. 矩阵的求逆

    1. 对于一个方阵 A,如果存在一个与其同阶的方阵 B,使得 \(AB=BA=I\)(I 为单位矩阵),则称 B 为 A 的逆矩阵,当然,A 也是 B 的逆矩阵
    2. 函数

      inv(A) % 求方阵 A 的逆矩阵
3.3.1 矩阵求值
  1. 矩阵的行列式值

    1. 把方阵看作一个行列式,并对其按行列式的规定求值,这个值就称为方阵所对应行列式的值
    2. 函数

      det(A) % 求方阵 A 所得对应的行列式的值
  2. 矩阵的秩

    1. 矩阵线性无关的行数或列数称为矩阵的秩
    2. 函数

      rank(A) % 求矩阵 A 的秩
    3. 奇数阶魔方阵秩为 n,即奇数阶魔方阵为满秩矩阵

      一重偶数阶魔方阵秩为 \(n/2+2 \)(n 是 2 的倍数,但非 4 的倍数)

      二重偶数阶魔方矩阵的秩为 3(n 为 4 的倍数)

  3. 矩阵的迹

    1. 矩阵的迹等于矩阵的对角线元素之和,与等于矩阵的特征值之和
    2. 函数

      trace(A) % 求矩阵 A 的迹
  4. 矩阵的范数

    1. 矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度
    2. 罕用范数

      1. 向量

        1. 向量 V 的 1—范数:向量元素绝对值之和

          公式:\(||V||_1~ =~\sum\limits^n_{i=1}|v_i|\)

          norm(V,1) % 计算向量 V 的 1—范数
        2. 向量 V 的 2—范数:向量元素平方和的平方根

          公式:\(||V||_2~ =~\sqrt{\sum\limits^n_{i=1}v_i^2}\)

          norm(V) % 计算向量 V 的 2—范数
          norm(V,2) % 计算向量 V 的 2—范数
        3. 向量 V 的 \(\infty\)—范数:所有向量元素绝对值中的最大值

          公式:\(||V||_{\infty}~ =~\max\limits_{1 \le i \le n}{|v_i|}\)

          norm(V,inf) % 计算向量 V 的∞—范数
      2. 矩阵

        1. 矩阵 A 的 1—范数:矩阵列元素绝对值之和的最大值

          公式:\(||A||_1~ =~\max\limits_{1 \le j \le n} {\sum\limits^m_{i=1}|a_{ij}|}\)

          norm(A,1) % 计算矩阵 A 的 1—范数
        2. 矩阵 A 的 2—范数:\(AA’\)矩阵的最大特征值平方根

          公式:\(||A||_2~ =~\sqrt{\lambda _1}\)(\(\lambda_1\)为 \(AA’\)的最大特征值)

          norm(A) % 计算矩阵 A 的 2—范数
          norm(A,2) % 计算矩阵 A 的 2—范数
        3. 矩阵 A 的 \(\infty\)—范数:所有向量元素绝对值中的最大值

          公式:\(||A||_{\infty} ~ =~\max\limits_{1 \le i \le m} {\sum\limits^n_{j=1}|a_{ij}|}\)

          norm(A,inf) % 计算矩阵 A 的∞—范数
  5. 矩阵的条件数

    1. 矩阵 A 的条件数等于 A 的范数与 A 的逆矩阵的范数的乘积
    2. 条件数越靠近于 1,矩阵的性能越好,反之,矩阵的性能越差
    3. 条件数

      1. 矩阵 A 的 1—范数下的条件数:

        cond(A,1) % 计算矩阵 A 的 1—范数下的条件数
      2. 矩阵 A 的 2—范数下的条件数:

        cond(A) % 计算矩阵 A 的 2—范数下的条件数
        cond(A,2) % 计算矩阵 A 的 2—范数下的条件数
      3. 矩阵 A 的 \(\infty\)—范数下的条件数:

        cond(A,inf) % 计算矩阵 A 的∞—范数下的条件数
3.4.1 矩阵的特征值与特征向量
  1. 矩阵的特征值的数学定义

    设 A 为 n 阶方阵,如果存在常数 \(\lambda\)和 n 维非 0 向量 x,使得等式 Ax=\(\lambda\)x 成立,则称 \(\lambda\)为 A 的特征值,x 为对应特征值 \(\lambda\)的特征向量

  2. 函数

    E = eig(A) % 求矩阵 A 的全副特征值,形成向量 E
    [X,D] = eig(A) % 求矩阵 A 的全副特征值,形成对角阵 D,并产生矩阵 X,X 各列是相应的特征向量
3.5.1 稠密矩阵
  1. 矩阵的存储形式

    1. 分类

      齐全存储形式

      稠密存储形式:只存储矩阵非零元素的值及其地位

  2. 稠密矩阵存储形式的产生

    1. 两种存储形式的转化

      A = sparse(S) % 将矩阵 S 转化为稠密存储形式的矩阵 A
      S = full(A) % 将矩阵 A 转化为齐全存储形式的矩阵 S 
    2. 建设稠密存储矩阵

      sparse(m,n) % 生成一个 m * n 的所有元素都是 0 的稠密矩阵
      sparse(u,v,S) %(其中 u,v,S 是 3 个等长的向量,S 为要建设稠密矩阵的非零元素,u(i),v(i)别离是 S(i)的行和列下标)spconvert(A) %A 为一个 m *3,m* 4 的矩阵,其每一行示意一个非零元素,m 是非零元素的个数
      %A(i,1)示意第 i 个非零元素所在的行
      %A(i,2)示意第 i 个非零元素所在的列
      %A(i,3)示意第 i 个非零元素值的实部
      %A(i,4)示意第 i 个非零元素值得虚部
      % 若矩阵全为实数,则无需第 4 行
    3. 带状稠密矩阵的稠密存储

      1. 稠密矩阵类型

        无规则构造的稠密矩阵、有规定构造的稠密矩阵

专题四 程序流程管制

4.1.1 程序构造程序
  1. 程序设计

    1. 剖析问题,确定求解问题的数学模型或办法
    2. 设计算法,并画出流程图
    3. 抉择编程工具,依据算法编写程序
    4. 调试程序,分析程序输入后果
  2. 程序的根本构造

    1. 程序构造
    2. 抉择构造
    3. 循环构造
  3. 程序文件(m 文件)

    1. 脚本文件:能够间接在命令行窗口执行的文件,也叫命令文件
    2. 函数文件:不能间接执行,必须以函数调用的形式来调用它
  4. 文件的建设

    1. 用命令按钮创立文件
    2. 用 edit 命令创立文件
  5. 程序构造

    1. 数据的输出

      A = input(提示信息,选项)
    2. 数据的输入

      disp(输入项)
    3. 程序的暂停

      pause(提早的秒数)
      % 省略秒数,程序期待至键盘有输出后持续运行
      %Ctrl+C 强行终止命令
4.2.1 用 if 语句实现抉择语句
  1. 抉择构造又称为分支构造,是依据给定条件是否成立来决定程序的执行流程
  2. 单分支 if 语句

    if 条件
        语句
    end
    % 条件:%   1. 条件为标量时,非零示意条件成立,零示意条件不成立
    %   2. 条件为矩阵时,如果矩阵为非空,且不包含零元素,则条件成立,否则不成立
    %eg:[1,2;0,4]示意条件时,条件不成立;[1,2;3,4]示意条件时,条件成立
  3. 双分支 if 语句

    if 条件
        语句组 1
    else 
        语句组 2
    end
  4. 多分支 if 语句

    if 条件 1
        语句组 1
    elseif 条件 2
        语句组 2
        ···
    elseif 条件 n -1
        语句组 n -1
    else
        语句组 n
    end
    % 多分支 if 语句中不论有几个分支,程序执行完一个分支后,其余分支将不会再执行,这时整个 if 语句完结
4.3.1 用 switch 语句实现抉择构造
switch 表达式
 case 后果表 1
    语句组 1
 case 后果表 2
     语句组 2
    ···
 case 后果表 n -1
     语句组 n -1
 otherwise
    语句组 n
end
% 仅执行一条语句
%switch 表达式应该是一个能够列举其值的表达式
%case 后果表为 switch 表达式的取值,当取值有多个时,利用单元数据表示(用大括号括起来,相似列表的列举)
4.4.1 用 for 语句实现循环构造
  1. 循环构造又称为反复构造,是利用计算机估算速度快以及能进行逻辑管制的特点来反复执行某些操作
  2. 格局 1:

    for 循环变量 = 表达式 1(初值): 表达式 2(步长): 表达式 3(终值)
        循环体语句
    end
    %for 循环的次数取决于循环变量后的向量中的元素个数
    % 推出循环后,循环变量的值就是向量中最初的元素值
    % 向量为空时,循环体一次也不执行

    格局 2:

    %for 语句的循环变量也能够是一个列向量
    for 循环变量 = 矩阵表达式
        循环体语句
    end
4.5.1 用 while 语句实现循环构造
  1. 格局:

    while 条件
        循环构造
    end
    % 多用于循环次数不确定的状况,循环次数确定时 for 语句更不便
  2. 循环管制语句

    break % 用来跳出循环体,完结整个循环
    continue % 用来完结本次循环,去执行下次循环
  3. 循环的嵌套

    1. 如果一个循环构造的循体又蕴含一个循环构造,就称为循环的嵌套,或称为多重循环构造
4.6.1 函数文件的定义与调用
  1. 定义的根本构造:

    function 输入形参表 = 函数名(输出形参表)正文阐明局部
    函数体语句
    % 当有多个形参时,形参之间用逗号分隔,组成形参表
    % 当输入形参多于一个时,该当用方括号括起来形成输入矩阵
    % 函数文件名通常由函数名加上扩展名.m 组成
    %return 语句示意函数的返回值,但函数也会主动返回
  2. 调用的格局

    [输入实参表] = 函数名(输出实参表)
    % 在调用函数时,函数输入输出参数称为理论参数,简称实参
  3. 匿名函数

    函数句柄变量 = @(匿名函数输出参数)匿名函数表达式
    eg:f = @(x,y)x^2+y^2
  4. 给函数起别名

    函数句柄名 = @函数名
4.7.1 函数的递归调用
  1. 函数的嵌套调用

    在一个函数外部调用了其余函数

  2. 函数的递归调用

    1. 一个函数调用它本身称为函数的递归调用

      递归是将一个大型的简单问题层层转化为一个与原问题类似的规模较小的问题来求解

    2. 递归模式

      1. 间接递归调用

        间接调用本身

      2. 间接递归调用

        先调用另一个函数,再由这个函数调用本身

4.8.1 函数参数与变量曲线
  1. 函数参数的可调性

    nargin % 记录函数的输出实参个数
    nargout % 记录函数的输入实参个数
    1. 定义:

      == 局部变量 == 是指在程序中只在特定过程或函数中能够拜访的变量

      == 全局变量 == 的作用域是整个 MATLAB 工作空间,即全程无效,所有的函数都能够对它进行存取和批改

    2. 定义格局:

      % 全局变量
      global 变量名

专题五 MATLAB 绘图

5.1.1 二维曲线
  1. plot 函数

    1. 根本用法

      plot(x,y) %x,y 别离用来存储 x 坐标和 y 坐标数据
      plot(x) 
      % 若 x 为实数向量时,x 的下标为 x 坐标,向量值为 y 坐标
      % 若 x 为复数向量时,则实部为 x 坐标,虚部为 y 坐标
      plot(x,y) 
      % 如果矩阵 y 的列数等于向量 x 的长度,则以 x 为横坐标,以 y 的每个行向量为纵坐标绘制曲线,曲线的条数等于 y 的行数
      % 如果矩阵 y 的行数等于向量 x 的长度,则以 x 为横坐标,以 y 的每个列向量为纵坐标绘制曲线,曲线的条数等于 y 的列数
      plot(x,y) 
      %x,y 为同行矩阵时,以 x,y 对应元素为横、纵坐标绘制曲线,曲线的条数等于矩阵的列数
    2. 绘图的外观批改

      plot(x,y, 外观参数)
      1. 可选参数

        1. 线型

          "-" : 实线 
          ":" : 虚线
          "-.": 点画线
          "--": 双画线
        2. 色彩

          "r" : 红色
          "g" : 绿色
          "b" : 蓝色
          "w" : 红色
          "k" : 彩色
            ······
        3. 数据点标记

          "*" : 星号
          "o" : 圆圈
          "s" : 方块
          "p" : 五角星
          "^" : 朝上三角符号
            ······
  2. fplot 函数

    1. 根本用法

      fplot(f,lims, 外观参数) %f 代表一个函数,通常采纳函数句柄的模式。lims 为 x 轴的取值范畴,要用二元向量 [xmin,xmax] 形容,默认值为[-5,5]。可选的外观参数与 plot 雷同
      %f 的地位能够传入两个参数方程,用以绘制参数方程对应的曲线
5.2.1 绘制图形的辅助操作
  1. 图形标注

    1. title 函数

      title(图形题目, 属性名, 属性值)
      % 图形题目的参数为字符串(反对 LaTeX 格局控制符)%color 属性:用于设置图形题目文本的色彩,默认为黑
      %FontSize 属性: 用于设置题目文字的字号,默认为 11
    2. xlabel 函数与 ylabel 函数

      xlabel(x 轴阐明)
      ylabel(y 轴阐明)
      % 阐明的参数为字符串(反对 LaTeX 格局控制符)
    3. text 函数与 gtext 函数

      text(x,y, 阐明)
      gtext(阐明)
    4. legend 函数

      legand(图例 1, 图例 2,···)
      % 图形右上角对各个曲线的阐明
  2. 坐标管制

    1. axis 函数(坐标轴管制)

      axis([xmin,xmax,ymin,ymax,zmin,zmax]) 
      % 零碎依据 6 个值确定图形的坐标轴范畴
      axis equal % 纵横坐标轴采纳等长刻度
      axis square % 产生正方形坐标系
      axis auto % 应用坐标轴的默认设置
      axis off % 勾销坐标轴
      axis on % 显示坐标轴
    2. grid 函数(网格管制)

      grid on % 显示网格线
      grid off % 暗藏网格线
      grid % 在显示与暗藏之间切换
    3. box 函数(边框管制)

      box on % 显示边框
      box off % 暗藏边框
      box % 在显示与暗藏之间切换
  3. 图形放弃

    1. hold 函数(图形窗口刷新管制)

      hold on % 保留绘制的图形
      hold off % 下次绘制图形时,清空之前的图形
      hold % 在两个状态之间切换
  4. 图形窗口的宰割

    1. 子图:同一图形窗口中的不同坐标系下的图形
    2. subplot 函数

      subplot(m,n,p) % 将图形窗口分成 m * n 个绘图区,p 指定以后活动区序号(区号按行优先编号)% 在窗口不抵触的状况下,实践上能够宰割成任意大小的图形
5.3.1 其余模式的二维图形
  1. 其余坐标系下的二维图形

    1. 对数坐标图

      semilogx(x1,y1, 图形参数 1,x2,y2, 图形参数 2,···)
      % 将 x 换为对数刻度,而 y 为线性刻度
      semilogy(x1,y1, 图形参数 1,x2,y2, 图形参数 2,···)
      % 将 y 换为对数刻度,而 x 为线性刻度
      loglog(x1,y1, 图形参数 1,x2,y2, 图形参数 2,···)
      %x,y 全换成对数刻度
    2. 极坐标图

      polar(theta,rho, 图形参数)
      %thera 为极角,rho 为极半径,图形参数与 plot 函数雷同
  2. 统计图

    1. 条形类图形

      1. 条形图

        bar(x,y,style)
        % 参数 y 是数据,选项 style 用于指定分组排列模式,参数 x 用以存储横坐标
        %"grouped" : 簇状分组
        %"stacked" : 沉积分组
      2. 直方图

        hist(y,x) % 参数 y 是数据,x 用于指定区间的划分形式
        %x 为标量时,均分为 x 块,若 x 为向量时,x 中的每个数为指定分组的核心值,x 的个数为分组数
        rose(theta,x) % 绘制极坐标系下的直方图
    2. 面积类图形

      1. 扇形统计图

        pie(x,explode) %x 存储带统计数据,explode 管制图块的显示模式
      2. 面积统计图

        area(x,y, 外观参数) % 与 plot 类似,不过将下方数据填充色彩
    3. 散点类图形

      1. 散点图

        scatter(x,y, 图形参数,'filled')
        % 参数 x,y 用于定位数据点,图形参数能够管制图形的线型、色彩、数据点标记
        %"filled" 示意填充数据点标记,缺省时,数据点标记为空心
      2. 阶梯图

        stairs(x,y, 图形参数,'filled')
        % 参数 x,y 用于定位数据点,图形参数能够管制图形的线型、色彩、数据点标记
        %"filled" 示意填充数据点标记,缺省时,数据点标记为空心
      3. 杆图

        stem(x,y, 图形参数,'filled')
        % 参数 x,y 用于定位数据点,图形参数能够管制图形的线型、色彩、数据点标记
        %"filled" 示意填充数据点标记,缺省时,数据点标记为空心
    4. 矢量图

      1. 罗盘图

        compass(x,y,u,v) %(x,y)指定矢量终点,(u,v)指定矢量起点 
      2. 羽毛图

        feather(x,y,u,v) %(x,y)指定矢量终点,(u,v)指定矢量起点 
      3. 箭头图

        quiver(x,y,u,v) %(x,y)指定矢量终点,(u,v)指定矢量起点 
5.4.1 三维曲线
  1. plot3 函数

    plot3(x1,y1,z1, 图形参数 1,x2,y2,z2, 图形参数 2,··· ,xn,yn,zn, 图形参数 3) 
    %x,y,z 为向量时,对应绘制曲线
    %x,y,z 为矩阵时,先以列向量绘制曲线
    % 每组 x,y,z 向量都形成一组数据点的坐标
  2. fplot3 函数

    fplot3(funx,funy,funz,tlims)
    % 其中,funx、funy、funz 代表定义曲线 x,y,z 坐标的函数,通常采纳函数句柄的模式。tlims 为参数函数自变量的取值范畴,用二元向量 [tmin,tmax] 形容,默认为[-5,5]
5.5.1 三维曲面
  1. 立体网格数据的生成

    1. 利用矩阵运算生成
    2. 利用 meshgrid 函数生成

      [X,Y] = meshgrid(x,y);
      % 参数 x,y 为向量,存储网格点坐标的 X,Y 为矩阵
  2. 绘制三维曲面的函数

    1. mesh 函数(绘制网格图)

      mesh(x,y,z,c) 
      % 其中,x,y 为网格坐标矩阵,z 为网格点上的高度矩阵,c 用于指定在不同高度下的曲面色彩
      mesh(z,c)
      %x,y 省略时,z 矩阵的第 2 维下标当作 x 轴坐标,z 矩阵的第 1 维下标当作 y 轴坐标
      meshc(x,y,z,c) % 带等高线的三维网格曲面函数
      meshz(x,y,z,c) % 带底座的三维网格曲线函数
    2. surf 函数(绘制平面图)

      surf(x,y,z,c)
      % 其中,x,y 为网格坐标矩阵,z 为网格点上的高度矩阵,c 用于指定在不同高度下的曲面色彩
      surf(z,c)
      %x,y 省略时,z 矩阵的第 2 维下标当作 x 轴坐标,z 矩阵的第 1 维下标当作 y 轴坐标
      surfc(x,y,z,c) % 具备等高线的曲面函数
      surfl(x,y,z,c) % 具备光照成果的曲面函数
  3. 规范三维曲面

    1. sphere 函数(绘制球面)

      [x,y,z] = sphere(n)
      %n 用于指定球面的圆滑水平
    2. cylinder 函数

      [x,y,z] = cylinder(R,n)
      %n 用于指定曲面的圆滑水平
      %R 为向量,用于寄存等距离高度上的半径
      %R 为标量时,生成圆柱面
    3. peaks 函数

      \(f(x,y)~=~3(1-x^2)e^{-x^2-(y+1)^2}-10(\dfrac x5-x^3-y^5)e^{(-x^2-y^2)}-\dfrac 13 e^{(x+1)^2-y^2}\)

      peaks(n) % 生成 n 阶的方阵
      peaks(V) % 带入到向量或坐标的表达式
      peaks(x,y) % 带入到向量或坐标的表达式
      peaks % 默认生成 49 阶方阵
5.6.1 图形的润饰解决
  1. 视点解决

    1. 方位角:视点与原点连线在 xoy 上的投影与 y 轴负方向造成的角度

      仰角:视点与原点连线与 xoy 立体造成的角度

    2. 设置视点函数

      view(az,el) %az 为方位角,le 为仰角 (以度(°) 为单位)
      view(x,y,z) %x,y,z 示意视点在笛卡尔坐标中的地位
      view(2) % 从 2 维立体察看图形
      view(3) % 从 3 维空间察看图形
  2. 色调解决

    1. 色彩的向量示意

      [R,G,B] %R 红,G 绿,B 蓝
    2. 色图

      1. 色图矩阵
      2. 内建色图

        parula % 默认色图
        jet %
        hsv %
        hot % 寒色图
        cool % 冷色图
        spring % 秋季色图
        summer % 冬季色图
        autumn % 秋季色图
        winter % 夏季色图
        gray % 灰色图
        bone %
        copper %
        colormap(cmap) % 指定以后图形应用的色图
        % 能够自定义色图矩阵,也能够调用 MATLAB 提供的函数来定义色图矩阵
      3. 三维图形外表的着色

        shading facted % 将每个网格片用其高度对应的色彩进行着色,网格线是彩色
        shading falt % 将每个网格片用其高度对应的色彩进行着色,网格线也用相应的色彩着色
        shading interp % 在网格片内用色彩插值进行解决
  3. 剪裁解决

    1. 将图形中须要裁剪的局部设置为 NaN,在绘制图形时函数值为 NaN 的局部将不显示进去,从而达到对图形进行裁剪的目标
5.7.1 交互式绘图工具
  1. “绘图”选项卡
  2. 图形窗口绘图工具

    1. “显示绘图工具和停泊图形”
    plottools % 显示绘图工具和停泊图形 按钮
    1. 绘图工具的组成

      1. 图形选项板

        1. 新子图面板
        2. 变量面板
        3. 正文面板
      2. 绘图浏览器
      3. 属性编辑器

        1. 曲线属性编辑器
        2. 坐标系属性编辑器
        3. 图形窗口属性编辑器
  3. 图形窗口菜单和工具栏

专题六 数据分析与多项式计算

6.1.1 数据统计分析
  1. 求极值元素

    1. max 函数

      1. 当函数参数为向量时

        y = max(X) % 返回向量 X 的最大值,若 X 中含有复数,则返回模最大值
        [y,k] = max(X) % 返回向量 X 的最大值存入 y,最大元素的序号存入 k,若 X 中含有复数,则返回模最大值
      2. 当函数参数为矩阵时

        max(A) % 返回一个行向量,向量的第 i 个元素是矩阵 A 的第 i 列上的最大值(即返回每列的最大值,并生成一个向量)[Y,U] = max(A) % 返回行向量 Y 和 U,Y 向量记录每列的最大值,U 向量记录每列最大值元素的行号
        max(A,[],dim) %dim 取 1 时,函数性能与 max(A)统一;dim 取 2,函数返回列向量(即返回每行的最大值,并生成一个列向量)
    2. min 函数

      1. 当函数参数为向量时

        y = min(X) % 返回向量 X 的最小值,若 X 中含有复数,则返回模最小值
        [y,k] = min(X) % 返回向量 X 的最小值存入 y,最小元素的序号存入 k,若 X 中含有复数,则返回模最小值
      2. 当函数参数为矩阵时

        min(A) % 返回一个行向量,向量的第 i 个元素是矩阵 A 的第 i 列上的最小值(即返回每列的最小值,并生成一个向量)[Y,U] = min(A) % 返回行向量 Y 和 U,Y 向量记录每列的最小值,U 向量记录每列最小值元素的行号
        min(A,[],dim) %dim 取 1 时,函数性能与 min(A)统一;dim 取 2,函数返回列向量(即返回每行的最小值,并生成一个列向量)
  2. 求均值与中值

    1. 均值:指算数平均值,即每项数据之和除以数据项数

      mean() % 求算数平均值
    2. 中值:指在数据按递增或递加的顺序排列后,位于两头的一个数或是位于两头的两个数的平均值

      median() % 求中值
  3. 求和与求积

    sum() % 求和
    prod() % 求积
  4. 累加与累乘积

    1. 设 \(U = (u_1,u_2,u_3,···,u_n)\)是一个向量,V、W 是与 U 等长的另外两个向量,并且 \(V = ( \sum\limits^1_{i=1}u_i,\sum\limits^2_{i=1}u_i,\sum\limits^3_{i=1}u_i,···,\sum\limits^n_{i=1}u_i)\), \(W = ( \prod\limits^1_{i=1}u_i,\prod\limits^2_{i=1}u_i,\prod\limits^3_{i=1}u_i,···,\prod\limits^n_{i=1}u_i)\),

      则别离称 V、W 为 U 的累加和向量和累加积向量

    cumsum() % 累加和向量
    cumprod() % 累加积向量
  5. 求标准差与相关系数

    1. 标准差

    \(S_1 = \sqrt{\dfrac1{N-1}\sum\limits^N_{i=1}(x_i-\bar x)^2}\) 或 \(S_2 = \sqrt{\dfrac1{N}\sum\limits^N_{i=1}(x_i-\bar x)^2}\)

    \(S_1\)样本标准差 \(S_2\)总体标准差

    std(X) % 计算向量 X 的标准差
    std(A) % 计算矩阵 A 的各列的标准差
    std(A,flag,dim) %flag 取 0 时,计算样本标准差;flag 取 1 时,计算总体标准差
    1. 相关系数

      1. 相关系数:反馈两组数据序列之间的互相关系
      2. 计算公式:\(r =\dfrac{\sum(x_i-\bar x)(y_i-\bar y)}{\sqrt{\sum(x_i-\bar x)^2\sum(y_i-\bar y)^2}}\)
      3. 调用格局

        corrcoef(A) % 返回由矩阵 A 所造成的一个相关系数矩阵,其中,第 i 行第 j 列的元素示意原矩阵中第 i 列和第 j 列的相关系数
  6. 排序

    sort(X) % 对向量 X 进行升序排列
    [Y,I] = sort(A,dim,mode) %dim 指明排序对象(对列还是对行)mode 取“ascend”,则为升序;取“descend”,则为降序
    % 输入参数 Y 是排序后的矩阵,I 记录 Y 元素在 A 中的地位
6.2.1 多项式计算
  1. 多项式的示意

    1. 在 MATLAB 中 n 次多项式用一个长度为 n + 1 的行向量来示意

      如有 n 次多项

      \(p(x) = a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+···+a_1x+a_0\)

      示意为 \([a_n,a_{n-1},a_{n-2},···,a_1,a_0]\)

    2. 注意事项

      1. 多项式系数向量的程序为从高到低
      2. 多项式系数向量蕴含 0 次项系数
      3. 没有的项,其多项式系数向量对应地位利用 0 补足
  2. 多项式的四则运算

    1. 加减运算:对应向量的加减
    2. 乘除运算:

      conv(P1,P2) % 多项式相乘函数
      [Q,r] = deconv(P1,P2) % 多项式相除函数,Q 返回 P1 除 P2 的商式,r 返回余式
  3. 多项式的求导

    p = polyder(P) % 求多项式 P 的导函数向量
    p = polyder(P,Q) % 求 P·Q 的导函数
    [p,q] = polyder(P,Q) % 求 P / Q 的导函数,导函数的分子存入 p,分母存入 q 
  4. 多项式的求值

    polyval(p,x) % 代数多项式求值
    %p 为多项式系数向量;x 能够是标量、向量或矩阵。若 x 为标量则求多项式在该点的值;若 x 为向量或矩阵,则对向量或矩阵的每一个元素求多项式的值
    
    polyvalm(p,x) % 矩阵多项式求值
    % 要求 x 必须为方阵,以方阵为自变量求值
  5. 多项式的求根

    root(p) % 多项式求根函数
    ploy(x) % 已知根求多项式
6.3.1 数据插值
  1. 数据插值能够依据无限个点的取值情况,正当估算出左近其余点的取值,从而节约大量的试验和测试资源,节俭大量的人力、物力和财力。
  2. 一维插值

    1. 函数
    Y1 = interp1(X,Y,X1,method) % 一维差插值凹函数
    % 依据 X、Y 的值,计算函数在 X1 处的值。X、Y 是两个等长的已知向量,别离示意采样点和采样值。X1 是一个向量或标量,示意要插值的点。
    1. 插值办法(用来填入 method 中)

      1. linear:线性插值,默认办法

        将与插值点凑近的两个数据点用直线连贯,而后在直线上选取对应插值点的数据。

      2. nearest:最近点插值

        选取最近样本点的值作为插值数据。

      3. pchip:分段 3 次埃尔米特插值

        采纳分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线润滑的同时,还具备保形性。

      4. spline:3 次样条插值

        每个分段内结构一个三次多项式,使其插值函数除满足插值的条件外,还要求在各节点处具备间断的一阶和二阶导数

  3. 二维插值

    1. 函数

      Z1 = interp2(X,Y,Z,X1,Y1,method) % 二维插值函数
      % 其中,X、Y 是两个向量,示意两个参数的采样点,Z 为采样点对应的函数值。X1、Y1 是两个标量或向量,示意要插值的点。
6.4.1 曲线拟合
  1. 曲线拟合的原理

    1. 曲线拟合也是一种函数迫近的办法
    2. 最小二乘法

      通过最小化误差的平方和来寻找数据的最佳函数匹配

      设 \(p(x)\)是一个多项式函数

      且 \(\sum\limits^n_{i=1}(p(x_i)-y_i)^2\)的值最小,

      则 \(p(x)\)为原函数 \(y = f(x)\)的迫近函数

  2. 函数

    P = polyfit(X,Y,m) % 多项式拟合函数
    [P,S] = polyfit(X,Y,m)
    [P,S,mu] = polyfit(X,Y,m)
    % 由样本数据 X、Y,产生一个 m 次的多项式 P 及其在采样点误差数据 S,mu 为一个二元向量,mu(1)是 X 的平均值,mu(2)是 X 的标准差

专题七

7.1.1 数值微分与数值积分
  1. 数值微分

    1. 数值差分与差商

      1. 数值差分

        1. 向前差分:\(\bigtriangleup f(x_0) = f(x_0+h)-f(x_0)\)
        2. 向后差分:\(\bigtriangledown f(x_0) = f(x_0)-f(x_0-h)\)
        3. 核心差分:\(\delta f(x_0) = f(x_0+\frac h2)-f(x_0-\frac h2)\)
      2. 数值差商

        任意函数 \(f(x)\)在 \(x_0\)点的导数是通过极限定义的

        向前差商:\(f'(x_0)\approx \lim\limits_{h\to 0}\dfrac{f(x_0 + h) – f(x_0)}h\)

        向后差商:\(f'(x_0)\approx \lim\limits_{h\to 0}\dfrac{f(x_0) – f(x_0-h)}h\)

        核心差商:\(f'(x_0)\approx \lim\limits_{h\to 0}\dfrac{f(x_0 + \frac h2) – f(x_0- \frac h2)}h\)

    2. 数值微分的实现

      dx = diff(x) % 计算向量 x 的一阶向前差分,dx(i) = x(i-1)-x(i),i=1,2,···,n-1
      dx = diff(x,n) % 计算向量 x 的 n 阶向前差分
      dx = diff(A,n,dim) % 计算矩阵 A 的 n 阶差分,dim 取 1 时,按列计算差分,dim 取 2 时,按行计算差分
  2. 数值积分

    1. 数值积分的基本原理

      1. 牛顿—莱布尼茨公式:

        \(\large {\int}_a^bf(x)dx = F(b)-F(a)\)

      2. 将积分区间分为若干子区间,求每个区间的近似积分,其和为定积分的近似值
    2. 数值积分的实现(一重积分)

      [l,n] = quad(filename,a,b,tol,trace)
      % 基于自适应辛普森办法
      [l,n] = quad(filename,a,b,tol,trace)
      % 基于自适应 Gauss-Lobatto 办法
      l = integral(filename,a,b)
      % 基于全局自适应积分办法(能够求无穷积分)[l,err] = quadgk(filename,a,b)
      % 基于自适应高斯—克朗罗德办法(能够求振荡积分,积分上上限能够为复数)l = trapz(x,y) 
      % 基于梯形积分法
      
      %filename 为被积函数名;a,b 为定积分的下限和上限;tol 管制积分精度,默认为 10e06;trace 管制是否展示积分过程
      % 参数 l 即定积分的值,n 为被积函数调用的次数
    3. 多重定积分的数值求解

      1. 求二重积分的数值解:\(\int_c^d\int_a^bf(x,y)dxdy\)

        l = integral2(filename,a,b,c,d)
        l = quad2d(filename,a,b,c,d)
        l = dblquad(filename,a,b,c,d)
      2. 求三重积分的数值解:\(\int_e^f\int_c^d\int_a^bf(x,y,z)dxdydz\)

        l = integral3(filename,a,b,c,d,e,f)
        l = triplequad(filename,a,b,c,d,e,f,tol)
7.2.1 线性方程组求解
  1. 线性方程组的间接解法

    1. 利用左除运算符的间接解法(列主元消去法)

      不用求逆后,再用乘法,能够间接用左除运算

    2. 利用矩阵合成求线性方程组

      1. LU 合成(合成为上三角和下三角矩阵)

        [L,U] = lu(A) % 产生一个上三角阵 U 和一个变换模式的下三角矩阵 L,使之满足 A =LU。A 必须为方阵
        [L,U,P] = lu(A) % 产生一个上三角阵 U 和一个下三角矩阵 L 以及一个置换矩阵 P,使之满足 PA=LU。A 必须为方阵

        \(x = U/(L/b)\)或 \(x = U/(L/P*b)\)

      2. QR 合成
      3. Cholesky 合成
  2. 迭代法

    1. 雅可比迭代法

      \(D = \begin{bmatrix}a_{11}& & & \& a_{22} & & \& & \ddots & \& & & a_{nn} \\end{bmatrix} \),\(L = -\begin{bmatrix} 0 & & & \ a_{21} & 0 & & \ \vdots & \ddots & \ddots & \ a_{n1} & \dots & a_{n,n-1} & 0 \ \end{bmatrix}\),\(U = \begin{bmatrix} 0 & a_{12} & \dots & a_{1n} \ & 0 & \ddots & \vdots \ & & \ddots & a_{n-1,n} \ & & & 0 \ \end{bmatrix}\)

      求解公式为 \(x = D^{-1}(L+U)x+D^{-1}b\)

      对应的迭代公式为 \(x^{[k+1]} = D^{-1}(L+U)x^{[k]}+D^{-1}b\)

    2. 高斯—赛德尔迭代法

      迭代公式 \(x^{[k+1]} = (D-L)^{-1}Ux^{[k]} + (D-L)^{-1}b \)

7.3.1 非线性方程求解与函数极值计算
  1. 非线性方程组求解

    1. 单变量非线性方程求解

      x = fzero(filename,x0) 
      %filename 为待求根方程左端的函数表达式,x0 为初始值
    2. 非线性方程组的求解
    x = fsolve(filename,x0,option) %x 为返回的近似值,filename 为待求根方程左端的函数表达式,x0 是初值,option 用于设置优化工具箱的优化参数,能够调用 optimset 函数实现
  2. 函数极值的计算

    1. 无约束最优化问题

      1. 个别形容:

        \(\min\limits_x f(x)~~~x = [x_1,x_2,···,x_n]^T\)

      2. 求最小值的函数:
      [xmin,fmin] = fminbnd(filename,x1,x2,option)
      [xmin,fmin] = fminsearch(filename,x0,option)
      [xmin,fmin] = fminunc(filename,x0,option)
      %filename 是定义的指标函数。x1、x2 示意被钻研区间的左、右边界。x0 是一个向量,示意极值点的初值。option 为优化参数,能够通过 optimset 函数来设置
    2. 有束缚最优化问题

      1. 个别形容

        \(\min\limits_{x~s.t.G(x)<0}f(x)~~~x = [x_1,x_2,···,x_n]\)

      2. 约束条件的细化

        1. 线性不等式束缚
        2. 线性等式束缚
        3. 非线性不等式束缚
        4. 非线性等式束缚
        5. X 的上界与下界
      3. 函数:

        [xmin,fmin] = fmincon(filename,x0,A,b,Aeq,beq,lbnd,Ubnd,NonF,option)
        %filename 是定义的指标函数,x0 是一个向量,示意极值点的初值。option 为优化参数,能够通过 optimset 函数来设置
        % 其余参数为约束条件,若约束条件不存在,则填入空矩阵
7.4.1 常微分方程数值求解
  1. 个别概念

    1. 概念

      常微分方程的初值问题就是寻找函数 \(y(t)\)使之满足如下方程:

      \(y’ = f(t,y),t_0 \in [t_0,b] ~~~~\)

      \(y(t_0) = y\)

      数值解法,就是求 \(y(t)\)在离散结点 \(t_0\)处的函数近似值办法,\(y_n=y(x_n)\)

    2. 分类

      1. 单步法(像只与前一个参量相干的递归)

        在计算 \(y_{n+1}\)时只用到前一步的 \(y_n\),因而在有了初值之后就能够逐渐向下计算,代表:龙格—库塔法

      2. 多步法

        在计算 \(y_{n+1}\)时,除了用到前一步的 \(y_n\)之外,还要用到 \(y_{n-p}\)的值,代表:亚当斯法

  2. 求解函数

    [t,y] = solver(filename,tspan,y0,option) 
    %t 和 y 别离给出工夫向量和相应的数值解;solver 为求常微分方程数值解的函数;filename 是定义 f(t,y)的函数名,该函数必须返回一个列向量;tspan 模式为[t0,tf],示意求解区间;y0 是初始状态向量;option 是可选参数,用于设置求解属性
    % 常微分方程求解函数存在对立命名格局
    %······

···

继续更新中

正文完
 0