Note

Matlab基础知识入门与梳理

2022年06月06日 Monday · 10 min read

Matlab的桌面环境及入门

工作界面

  • 菜单栏
  • 文件路径
  • 命令行窗口
  • 工作区

工作空间

  • 查看内存变量
  • 可命名新变量
  • 可修改变量
  • 绘图
  • 保存变量的数据(类型)
  • 装入数据

快捷键

  • Ctrl+Enter

    • 直接运行
  • F5

    • 自动保存并运行
  • Ctrl+R

    • 注释选定区域
  • Ctrl+T

    • 取消注释选定区域
  • Ctrl+Z

    • 撤销
  • Ctrl+N

    • 新建脚本
  • Ctrl+Y

    • 取消撤销
  • Ctrl+F

    • 查找/替换
  • Ctrl+I

    • 自动整理代码
  • Ctrl+C

    • 强制中断程序的运行

变量

  • 只能有字母、数字、下划线

  • 必须由字母开头

  • 不能包含空格以及其他符号

  • 不能使用Matlab关键字

  • 变量名最长63个字符

自带变量

  • ans

    • 结果
  • inf

    • ∞ 无穷大
  • NaN

    • 非数、0/0、∞/∞
  • pi

    • 圆周率Π

基本常用函数

查看已定义的变量

  • who

    • 显示当前工作空间中的所有变量
  • whos

    • 显示所有变量的详细属性

语句后面加分号会在命令行处隐藏本句输出

数据输出

  • disp(输出项)

程序的暂停

  • pause on
  • pause(n):暂停n秒

复数的输入

  • complex(实部,虚部)

清除变量

  • clear

    • 清除工作空间中所有变量
  • clear all

    • 清除工作空间的所有变量、函数、和mex文件(mex:在matlab调用的C语言)
  • clear 变量

    • 清除指定的变量

clc

  • 清空命令窗口显示的内容

变量的保存

  • save fname(.mat)

    • 将所有变量都保存到fname.mat中
  • save

    • 将所有变量保存到matlab.mat中
  • save fname 变量

    • 将指定变量保存到fname.mat中

变量的读取

  • load fname

    • 加载fname.mat中的数据
  • load fname 变量

    • 从fname.mat里读取某个变量的值

cd

  • 显示或设置当前工作目录

获取未知函数用法

  • help + 函数
  • doc + 函数

退出/关闭Matlab

  • quit
  • exit

显示当前目录下的所有文件

  • ls
  • dir

取整函数

  • fix():截尾取整

    • 例:fix(5.233)==5
    • 例:fix(-5.2646)==-5
  • round():四舍五入取整

    • 例:round(5.2)==5
    • 例:round(-5.6)==-6
  • floor():向下取整(比原数要小)

    • 例:floor(-6.1)==-7
    • 例:floor(5.98)==5
  • ceil():向上取整(比原数要大)

    • 例:ceil(-9.99)==-9
    • 例:ceil(9.01)==10

符号计算

syms

  • 定义变量

sym

limit

  • 求极限

    • 用法:limit(表达式,指定变量,趋近某值)表达式对指定变量趋近于某值时的极限

solve

  • 解方程

    • 用法一:solve(方程,待求未知数)
    • 用法二:solve(方程组,待求未知数)

diff

  • 求导数/微分

    • 用法一:diff(表达式,变量,n)表达式对某变量求n阶微分
    • 用法二:diff(表达式)表达式对缺省变量求微分
    • 用法三:diff(表达式,n)表达式对缺省变量求n阶微分

dsolve

  • 解微分方程

    • 用法

      • 用法一:
        dsolve(微分方程)

        • 形式一:
          syms y(t) a
          eqn = diff(y,t) == a*y;
          S = dsolve(eqn)
        • 形式二:
          F=dsolve(“Dy==a*y”)
      • 用法二:
        dsolve(微分方程,条件)

        • syms y(t) a
          eqn = diff(y,t) == a*y;
          cond = y(0) == 5;
          ySol(t) = dsolve(eqn,cond)
        • F=dsolve("Dy==a*y",y(0)==5)
      • 用法三:
        dsolve(微分方程组)

        • syms y(t) z(t)
          eqns = [diff(y,t) == z, diff(z,t) == -y];
          S = dsolve(eqns)
        • S=dsolve("Dyz",“Dz-y”)

int

  • 积分

    • 用法一:int(表达式)表达式对缺省变量的积分
    • 用法二:int(表达式,指定变量)表达式对指定变量的积分
    • 用法三:int(表达式,指定变量,积分上限,积分下限)求定积分

quad

  • 求定积分
    2022版本matlab
    官方推荐用integral替换

    • integral(函数,上限,下限)

function

  • 声明函数名称、输入和输出

替换函数subs(代数)

  • subs(表达式,新符号)用新符号代替表达式中的默认符号
  • subs(表达式,旧变量,新变量)用新变量代替表达式中的指定旧变量

变量精确vpa

  • vpa(变量,保留位数)

梯度gradient

等值线contour

子主题 14

数据的可视化

plot函数

  • plot(x)二维曲线绘图

    • 若x为向量,则以元素下标为横坐标,元素值为纵坐标绘图
    • 若x为实数二维数组时,则会按列绘制每列元素
    • 若x为复数二维数组,则会按列分别以数组的实部为横坐标,虚部为纵坐标绘制多条线段
  • plot(x,y)

    • x,y为同维数组时,绘制以x,y元素为横纵坐标的曲线
    • x为向量,y为二维数组时、且其列数或行数等于x的元素数时,绘制多条不同颜色的曲线
    • x为二维数组,y为向量时,与上相同,y仍然是纵坐标
  • plot+参数

    • plot(X,Y,’color-Linestyle‘,linewidth,’实数‘) 使用指定的线型、标记和颜色创建绘图。

        • 实线
      • -- 虚线
      • : 点线
      • -. 点划线
      • none 不显示线
      • RGBYMKW 红绿蓝黄洋红黑白
  • plot(x1,y1,x2,y2,x3,y3...)

    • 两两一组,绘制多条曲线
    • x1,y1可以是坐标也可以是表达式

绘图相关

  • hold

    • hold on保持当前图形并接受下一次绘制
    • hold off与上反
  • grid

    • grid on 显示分格线
    • grid off 隐藏分格线
  • 标题/图名

    • title(’text‘)
  • 坐标轴名

    • x轴 xlabel(’字符‘)
    • y轴 ylabel(’字符‘)
    • text(x,y,字符) 在指定坐标(x,y)处增加字符

坐标控制指令

  • axis equal:横纵坐标等长刻度
  • axis image:横纵坐标等长,且紧贴数据范围
  • axis suare:产生方形坐标系
  • axis normal:缺省矩形坐标系
  • axis([x1,x2,y1,y2])设定坐标范围

subplot()绘制独立子图

  • subplot(m,n,p)

    • 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。
  • subplot(’postion‘,[left,bottom,width,height])

    • 在指定位置绘制子图

三维图

  • plot3与plot同理均可添加参数

  • mesh

  • surf

    • surf(x,y,z,颜色)

动态图形

  • comet

    • comet(x,y):二维
    • comet(x,y,z,p):三维
    • comet(x,y,p):p为坐标轴间隔

流程控制

选择结构

  • if

    • 单分支

      • if 条件
        语句组
        end
    • 双分支

      • if 条件1
        语句1
        else
        语句2
        end
    • 多分支

      • if...else if...else if...else...end
  • switch

    • 与C语言同理 default换成otherwise 结尾处多个end

顺序结构

循环结构

  • for循环

    • for 循环变量=表达式1:表达式2:表达式3
      循环体
      end
  • while循环

    • while 条件
      循环体
      end

break与continue

  • break语句用于中止循环的执行
  • continue语句用于跳过本次循环执行下一次循环

Matlab矩阵(数组)的表示

均在方括号内

一维数组(向量)

  • 方法一:使用方括号创建一维数组 元素之间用空格或逗号隔开
  • 方法二:使用方括号加冒号[1:10]表示1~10顺序整数排列的行向量(默认公差为1)
  • [1:2:10]表示从1到10公差为2的向量
  • 方法三:linspace(首元素,末元素,生成n个元素)忽略n默认生成100个

二维数组(矩阵)

  • 子主题 1

    • 由行和列组成
    • 列与列之间用逗号或空格隔开
    • 行与行之间用分号“;”隔开
  • 函数方法生成

    • zeros(m,n)生成m行n列全0矩阵
    • ones(m,n)生成m行n列全1矩阵

多维数组

所涉及函数

  • 重构数组reshape

    • reshape(原数组,新数组的行数,新数组的列数)
  • zeros

  • ones

  • eyes(m,n)使主对角线全为1

  • rand(m,n)产生0~1之间均匀分布的随机矩阵

  • randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵

  • randi(max,m,n)最大值范围内随机数矩阵

  • size(某个数组)就会返回这个数组的行和列

  • length(数组)会返回这个数组的最大维数

数组的运算

  • 算数运算

      • 对于矩阵相乘,矩阵A的列数必须等于矩阵B的行数
    • /

    • .*

      • 数组乘法。 A .* B是数组A和B的逐个元素乘积。A和B必须具有相同的大小,除非它们之一是标量。
    • .^

    • ^

  • 逻辑运算

    • 元素逻辑

      • &
      • |
      • ~
    • 短路逻辑

      • &&
      • ||
  • 关系运算

    • =

      • 大于等于
    • ==

      • 等于
    • <

      • 小于
      • 大于
    • ~=

      • 不等于
    • <=

      • 小于等于

转换:将行和列互换

  • 矩阵转换加 ‘ 单引号
  • 数组转换加 .‘ 点和单引号

矩阵连接

  • cat(制定维度,矩阵1,矩阵2):在指定维度上连接两个矩阵
  • horzcat(矩阵1,矩阵2):水平方向连接矩阵1和矩阵2
  • vertcat(矩阵1,矩阵2):垂直方向连接

数据类型

char

  • 字符

cell

  • 单元

struct

  • 结构

logical

  • 逻辑

numeric

  • 数值

数值型数据

整数

  • 带符号

    • int8/16/32/64 有符号8/16/32/64位整数
  • 无符号

    • uint8/16/32/64 无符号8/16/32/64位整数

浮点数

  • 单精度single
  • 双精度double

数据分析与统计

求和与求积

  • sum(向量):返回向量各元素之和
  • sum(矩阵,1(行)2(列)):输出矩阵的行元素之和或列元素之和
  • prod(向量):返回向量中个元素乘积
  • prod(向量,1或2):与sum同理

平均值与均值

  • mean(向量):返回向量的算术平均值
  • median(向量):返回向量中的中值

常见问题解决方法

eval解决绘图时 变量问题,符号函数--->数值函数