MATLAB 备忘录

Last updated on April 30, 2023 am

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

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

常用知识

  1. 分号的作用

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

常用操作

  1. 批量添加/取消注释

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

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

    1
    clc;
  4. 清除变量名

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

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

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

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

    1
    whos  % 命令行输入

绘图

  1. 二维线条

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

    1
    grid on;
  3. 图片标题

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

1
2
3
4
5
6
7
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.” 错误
1
2
3
打开串口时出现错误: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);

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

  1. 1e2=100

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

  2. workspace 不显示变量信息

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

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

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

  4. matlab 中 @(x)的含义

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

    1
    2
    3
    4
    % f.m
    function
    y=f(x)
    y=acos(x);
  5. NaN: not a number


MATLAB 备忘录
https://erenship.com/posts/73eb.html
Author
Eren
Posted on
April 10, 2022
Licensed under