MATLAB 备忘录

本文最后更新于:3 个月前

在此记录笔者在使用 MATLAB 过程中遇到的问题及笔记。

MATLAB(Matrix Laboratory,矩阵实验室)是由美国 The MathWorks 公司出品的商业数学软件。MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除矩阵运算、绘制函数/数据图像等常用功能外,MATLAB 还可用来创建用户界面,以及调用其它语言(包括 C、C++、Java、Python、FORTRAN)编写的程序。 ——Wikipedia

常用知识

  1. 分号的作用

    两个作用:1. 数组行分隔符;2. 取消运行显示

常用操作

  1. 批量添加/取消注释

    ctrl + r  % 添加注释
    ctrl + t  % 取消注释
  2. 中断正在执行的操作

    ctrl + c  
    % 很多程序操作都是使用 ctrl+c 进行操作中断
  3. 清屏
    清除命令窗口中的所有输入和输出信息,不影响命令的历史记录。

    clc;
  4. 清除变量名

    清除 workspace 中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。

    clear;  % 清除 workspace 中的无用的变量
    clear all;  % 清除 workspace 中的所有变量
  5. 关闭绘图窗口

    close all;  % 关闭所有绘图窗口 
    %% 一般主函数都是三件套
    clc;
    clear all;
    close all;
  6. 取实部虚部

    a = 1 + 2i;
    shibu = real(a);
    xubu = imag(a);
  7. 查看.mat文件中的数据

    whos  % 命令行输入

绘图

  1. 二维线条

    plot(t, r1, 'linewidth',1.2)
    % Linewidth 是修改线宽,Markersize 是修改离散点标记的大小(比如x或+)
  2. 显示网格

    grid on;
  3. 图片标题

    title('图片标题');
  4. 坐标轴设置

    xlabel('x 轴的标题'),ylabel('y 轴的标题');  %坐标轴标题
    axis([0 100 0 90]);  % 设置坐标轴范围
    
    set(gca, 'YTick', (0: 5: 100))  % 设置 Y 坐标的刻度
    set(gca, 'FontSize', 8)  % 设置坐标轴字体为 8
    
    legend('KF','EKF','UKF'):在坐标区上添加图例 KF,EKF,UKF

线型、符号及颜色汇总

image-20220416171408067

其他问题

  1. 串口通讯中出现 “COMXX is not available.” 错误

    打开串口时出现错误:MATLAB:serial:fopen:opfailed
    打开失败: Port: COM1 is not available. No ports are available.
    Use INSTRFIND to determine if other instrument objects are connected to the requested devic

    解决方法:错误提示中已经说明了使用 instrfind 去检查串口对象是否在运行(被占用)。

    在命令行输入 instrfind 可以看到:

    Instrument Object Array

    Index: Type: Status: Name: 1 serial closed Serial-COM3

    index 为 1 那行中 COM3 已经被打开了。在代码中打开串口前加一行代码:fclose(instrfind);

    用意是把已经打开的串口关闭,此时再运行代码,就可以成功打开串口了。

  2. 1e2=100

    表示一个数。这是科学计数法表示,e 前面指的是基数,e 后面指的是 10 的幂数,如 2.2e3=2.2×1000=2200。

  3. workspace 不显示变量信息

    使用 function 后就会这样。自动清掉在 function 内部建立的变量。 解决方法:去掉头部的 function main 和最后一个 end

  4. “警告: 矩阵为奇异工作精度”

    解决方法:把 inv 改成 pinv 即可。因为 inv 是对矩阵求逆,而对于不是可逆矩阵的矩阵求逆就会出错,pinv 就是对不是可逆矩阵的矩阵求伪逆。

  5. matlab 中 @(x)的含义

    表示 f 为函数句柄,@是定义句柄的运算符。f=@(x)acos(x) 相当于建立了一个函数文件:

    % f.m
    function
    y=f(x)
    y=acos(x);
  6. NaN: not a number


本文作者: Eren
本文链接: https://erenship.com/posts/73eb.html
版权声明: 署名-非商业性使用-相同方式共享 4.0 国际(CC BY-NC-SA 4.0

 目录


# Do more, know more, be more