前言
本软件基本上只要有编程基础即可开玩
1. 概述
1.1 简单了解 MATLAB 是什么
MATLAB(全称为 Matrix Laboratory,翻译为矩阵工厂或矩阵实验室)是由美国 MathWorks 公司开发的一款商业数学软件。它专门设计用于高级数学计算、数据分析以及科学研究,支持多种功能包括无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人技术和控制系统等。
1.2 可以用 MATLAB 干什么
MATLAB 功能强大,可以用他实现复杂的数学运算和算法开发,或者执行矩阵运算、线性代数求解、数值分析及函数优化等等;你也可以使用 MATLAB 自带的 Simulink 工具进行系统和组件模型仿真,多领域集成仿真,如电子、机械、流体等;图像处理和计算机视觉方面可以做图像增强、边缘检测、特征提取等等。功能过多,这里就不再赘述。
值得注意的是,MATLAB 原本就是为数值计算和科学计算设计的,它内置的数学功能非常强大,包括但不限于矩阵运算、微积分、优化问题等。并且 MATLAB 支持命令式编程、函数式编程和面向对象编程等多种编程范式,在工业界和学术界都有广泛的应用。明确了这一点,我们在学习线性代数等学科的时候就可以借助此类软件辅助理解,更快的掌握学科知识点。
2.MATLAB 发展历史
2.1 发展早期:
MATLAB 的故事始于 20 世纪 70 年代,由美国新墨西哥大学计算机科学系主任 Cleve Moler 起草。Moler 教授看到了那个时代学生在使用 Fortran 语言进行数学编程的困难,决定开发一个更容易使用的工具。这个工具可以让学生更直接地进行矩阵和线性代数计算,无需深入 Fortran 编程的复杂性。因此,Moler 用 Fortran 语言编写了最初版本的 MATLAB,这个版本主要是一个交互式矩阵计算器。Moler 教授将其用作教学工具,希望能够帮助他的学生更容易理解和实现复杂的数学运算。这个工具很快在学术界引起了兴趣,Moler 开始在其他大学和研究机构分享 MATLAB。
2.2 商业化:
1984 年,随着 MATLAB 的流行和潜在的商业价值变得越来越明显,Jack Little、Cleve Moler 以及 Steve Bangert 合作,成立了 MathWorks 公司,并开始了针对 MATLAB 的全面开发和商业化销售。与 Moler 的初版不同,MathWorks 发布的 MATLAB 是用 C 语言编写的,这使得它在运行速度和功能上都大大增强。
2.3 MATLAB 的演进:
从 20 世纪 90 年代开始,MATLAB 迅速成为国际上科学计算和工程设计的首选软件,其功能也从最初的简单矩阵计算扩展到了包括数值分析、算法开发、数据可视化和界面构建在内的广泛领域。
随着时间的推移,MathWorks 不断增强 MATLAB 的功能,**引入了诸多工具箱(Toolbox)**以扩展 MATLAB 的应用范围例如:
- Image Processing Toolbox 使 MATLAB 在处理和分析图像方面变得更加强大。
- Signal Processing Toolbox 和 Statistics Toolbox 分别为信号处理和统计分析提供了强大的工具。
- MATLAB Compiler 允许将 MATLAB 代码编译成独立的应用程序,以便于分发和部署。
2.4 近期发展:
直到 2022 年,MATLAB 的发展仍在持续,MathWorks 推出了针对 Apple Silicon Mac 用户的 MATLAB R2022a 测试版,这标志着 MATLAB 在跨平台支持方面的进一步发展。
MATLAB 的成功不仅仅体现在其能够解决复杂数学和工程问题上,更在于它的易用性、灵活性以及持续的创新。此外,MathWorks 社区的支持也为 MATLAB 的用户提供了一个分享、学习和交流的平台。
MATLAB 从一个简单的矩阵计算工具发展成为了世界上最广泛使用的科学计算软件之一,那么我们到底该怎么使用呢,以下让我们一起走进 MATLAB 的世界
3.MATLAB 的安装
网上目前有很详细的安装步骤教程,所以这里就不再赘述安装方法。值得一提的是关于 a 版本和 b 版本的说明:这里以 2024 年为例,MATLAB2024a 和 MATLAB2024b 是同一个年 MATLAB 的不同版本,通常会在一年内发布多个版本是为了及时修复错误、增加新功能或改进性能。通常,后续版本(如 a 和 b)会在之前版本的基础上进行一些改进和更新。最好我们下载比较新的版本,这样一些比较方便的功能就可以直接使用。
4. MATLAB 基础
特别值得指出的是 MATLAB 里面关于矩阵的处理,MATLAB 最初就是为了处理矩阵运算而设计的
4.1 MATLAB数据结构
在 MATLAB 中,数据结构是存储和组织数据的方式,以便我们可以高效地进行数据处理和分析。MATLAB 提供了多种数据结构,包括数组、矩阵、结构体(struct)、单元数组(cell array)、表格(table)、时间表(timetable)等。
1. 数组和矩阵
-
定义与初始化
数组是 MATLAB 中的基本数据结构,可以是一维的向量或者二维的矩阵,甚至更高维度。A = [1 2 3; 4 5 6]; % 创建一个2x3的矩阵 v = [1 2 3 4 5]; % 创建一个行向量
-
访问元素
A(1,2) % 访问A中第一行第二列的元素(输出2) v(3) % 访问向量v中第三个元素(输出3)
2. 结构体(Struct)
-
定义与初始化
结构体是一种可包含多个不同类型数据的数据结构。每种数据被称为字段。person.name = 'John'; person.age = 28; person.salary = 50000;
-
访问结构体
person.name % 输出'John'
3. 单元数组(Cell Array)
非常好用的一种数据结构,对于不同类型的数据组合很好用
-
定义与初始化
单元数组用于存储不同类型或大小的数据。C = {1, [2, 3], 'hello'};
-
访问单元格内容
C{2} % 返回[2, 3] C{3} % 返回'hello'
4. 表格(Table)
一般来说excel往里面导入的时候比较方便
-
定义与初始化
表格是一种用于存储列变量(可能彼此类型不同)的数据结构,特别适用于统计和数据分析。Name = {'John'; 'Jane'; 'Mary'}; Age = [28; 34; 22]; T = table(Name, Age);
-
访问表格数据
T.Name % 访问名字列 T.Age(2) % 访问年龄列的第二行数据
5. 时间表(Timetable)
这里可以顺便看一下Pandas快速入门里面对时间的处理,特别是大型数据处理时使用这些工具很方便
-
定义与初始化
时间表是表格的一个特殊类型,索引是时间日期类型,适合时间序列数据。Time = datetime({'2022-01-01'; '2022-01-02'; '2022-01-03'}); Temp = [22; 23; 21]; TT = timetable(Time, Temp);
-
访问时间表数据
TT.Time % 访问时间戳 TT.Temp(1) % 访问第一天的温度
这些主要数据结构的基本用法已覆盖,但 MATLAB 还有更多高级功能和操作,例如数据拼接、排序、条件过滤等,有需要的同学可以自行研究
4.2 MATLAB文件功能
在 MATLAB 环境中,不同类型的文件具有各自的功能和作用。
1. M 文件(.m)
-
功能:M 文件是 MATLAB 的脚本或函数文件。它们用于保存和执行 MATLAB 命令。
-
例子:
-
脚本:脚本是一系列运行在 MATLAB 命令行的语句。
% Filename: exampleScript.m a = 5; b = 10; c = a + b; disp(c);
-
函数:函数是具有输入和输出的可重用代码块。
% Filename: addNumbers.m function result = addNumbers(x, y) result = x + y; end
-
2. MAT 文件(.mat)
赞美mat,很好用
-
功能:MAT 文件是 MATLAB 的数据文件格式,用于存储变量。
-
例子:保存并加载 MAT 文件。
% 保存数据 myData = [1, 2, 3, 4, 5]; save('myDataFile.mat', 'myData'); % 加载数据 newVar = load('myDataFile.mat');
3. FIG 文件(.fig)
可以转png等图片格式的
-
功能:FIG 文件是 MATLAB 的图形文件,用于保存图形界面(GUI)或图表。
-
例子:使用
savefig
保存图形,使用openfig
加载图形。 -
x = linspace(0, 10, 100); y = sin(x); plot(x, y); savefig('myFigure.fig'); % 打开图形 openfig('myFigure.fig');
4. P 文件(.p)
-
功能:P 文件是受保护的 MATLAB 文件,其中的 M 文件被加密,可用来隐藏源代码以保护知识产权。
-
例子:**
**将 M 文件转换为 P 文件。pcode('myFunction.m');
5. Simulink 模型文件(.slx, .mdl)
-
功能:这些文件用于 Simulink 环境中,它们包含 Simulink 模型的设计和组件。
-
例子:**
**创建和保存 Simulink 模型(需要打开 Simulink 环境)。simulink; % 启动Simulink % 在Simulink中创建模型后保存
6. Mex 文件(.mexw64, .mexmaci64 等)
因为底层还是C 和 Fortran
-
功能:Mex 文件允许 MATLAB 执行编译的 C/C++ 代码,以提高代码性能。
-
例子:**
**编写和编译 C 代码为 Mex 文件。// Filename: exampleFunction.c #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { plhs[0] = mxCreateDoubleScalar(mxGetScalar(prhs[0]) + mxGetScalar(prhs[1])); }
在 MATLAB 中编译:
mex exampleFunction.c
7. MLAPP 文件(.mlapp)
- 功能:MLAPP 文件是 App Designer 创建的 MATLAB 应用程序文件,包括用户界面和关联代码。
- 例子:**
**使用 App Designer 创建和保存应用程序。(操作在 App Designer 图形界面进行)
这些文件类型构成了 MATLAB 的核心功能
4.3 MATLAB绘图
用于数据可视化和图形分析 - MATLAB的图还是很好看的,有时候vscode里面同样的数据画出来特丑,但MATLAB美化后看起来很美观
1. 基本绘图命令
1.1 plot
函数
-
功能:用于绘制线条或点的图形。
-
用法:
x = linspace(0, 2*pi, 100); % 生成x值 y = sin(x); % 计算对应的y值 plot(x, y); % 绘制图形
1.2 标题和标签
-
title
:添加图形标题。 -
xlabel
:添加 x 轴标签。 -
ylabel
:添加 y 轴标签。plot(x, y); title('Sine Wave'); xlabel('Time'); ylabel('Amplitude');
1.3 图例
-
legend
:图形中添加图例。plot(x, sin(x), x, cos(x)); legend('sin(x)', 'cos(x)');
1.4 轴界限
-
xlim
和ylim
:设置 x 轴和 y 轴的界限。plot(x, y); xlim([0 pi]); ylim([-1 1]);
2. 多图绘制
2.1 subplot
函数
-
功能:在一个窗口显示多个子图。
-
用法:
t = 0:0.01:2*pi; subplot(2,1,1); % 分为2行1列,激活第1个子图 plot(t, sin(t)); subplot(2,1,2); % 激活第2个子图 plot(t, cos(t));
2.2 hold on
和 hold off
-
hold on
:在同一坐标轴上绘制多条曲线。 -
hold off
:结束多线条绘制。x = 0:0.1:10; plot(x, sin(x)); hold on; plot(x, cos(x)); hold off;
3. 样式和颜色
3.1 线条样式
-
修改颜色、线型和标记:
plot(x, y, 'r--o'); % 红色、虚线、圆圈标记
3.2 设置线宽和标记大小
-
LineWidth
和MarkerSize
:plot(x, y, 'b-*', 'LineWidth', 2, 'MarkerSize', 10);
3.3 添加网格
-
grid on
:显示网格。plot(x, y); grid on;
4. 高级图形
4.1 柱状图(bar
)
data = [10, 20, 30, 40];
bar(data);
4.2 散点图(scatter
)
x = randn(1, 100);
y = randn(1, 100);
scatter(x, y);
4.3 3D 图形(例如 plot3
)
z = sin(x);
plot3(x, y, z);
4.4 等高线图(contour
)
[X, Y] = meshgrid(-2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
contour(X, Y, Z);
写在最后
网络公开版version :4.5.12
END