MATLAB 备忘录
在此记录笔者在使用 MATLAB 过程中遇到的问题及笔记。
MATLAB(Matrix Laboratory,矩阵实验室)是由美国 The MathWorks 公司出品的商业数学软件。MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除矩阵运算、绘制函数/数据图像等常用功能外,MATLAB 还可用来创建用户界面,以及调用其它语言(包括 C、C++、Java、Python、FORTRAN)编写的程序。 ——Wikipedia
常用知识
分号的作用
两个作用:1. 数组行分隔符;2. 取消运行显示
常用操作
批量添加/取消注释
ctrl + r % 添加注释 ctrl + t % 取消注释
中断正在执行的操作
ctrl + c % 很多程序操作都是使用 ctrl+c 进行操作中断
清屏
清除命令窗口中的所有输入和输出信息,不影响命令的历史记录。clc;
清除变量名
清除 workspace 中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。
clear; % 清除 workspace 中的无用的变量 clear all; % 清除 workspace 中的所有变量
关闭绘图窗口
close all; % 关闭所有绘图窗口 %% 一般主函数都是三件套 clc; clear all; close all;
取实部虚部
a = 1 + 2i; shibu = real(a); xubu = imag(a);
查看.mat文件中的数据
whos % 命令行输入
绘图
二维线条
plot(t, r1, 'linewidth',1.2) % Linewidth 是修改线宽,Markersize 是修改离散点标记的大小(比如x或+)
显示网格
grid on;
图片标题
title('图片标题');
坐标轴设置
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
线型、符号及颜色汇总
其他问题
- 串口通讯中出现 “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)
;
用意是把已经打开的串口关闭,此时再运行代码,就可以成功打开串口了。
1e2=100
表示一个数。这是科学计数法表示,e 前面指的是基数,e 后面指的是 10 的幂数,如 2.2e3=2.2×1000=2200。
workspace 不显示变量信息
使用
function
后就会这样。自动清掉在function
内部建立的变量。 解决方法:去掉头部的function main
和最后一个end
。“警告: 矩阵为奇异工作精度”
解决方法:把
inv
改成pinv
即可。因为inv
是对矩阵求逆,而对于不是可逆矩阵的矩阵求逆就会出错,pinv
就是对不是可逆矩阵的矩阵求伪逆。matlab 中 @(x)的含义
表示 f 为函数句柄,@是定义句柄的运算符。f=@(x)acos(x) 相当于建立了一个函数文件:
% f.m function y=f(x) y=acos(x);
NaN: not a number