Matlab学习

Matlab学习
落魄君子Matlab基础
关于基础的Matlab的基础命令,命令在B站上的郭彥甫老师MATLAB课程+AI整理的,油管链接和B站链接
内容核对至 2026-08-13。本文保留原课程的教学顺序,并将 MathWorks 已标记为“不推荐”或已移除的接口替换为当前写法。不同 MATLAB 版本和已安装工具箱会影响示例是否可用。
1.1 计算机使用
1 | % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % |
1.2 向量和矩阵
1 | % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % |
2.1 撰写
1 | %% 1. MATLAB Script 循环绘图 |
2.2 函数
1 | %% Scripts VS Functions |
3.1 字符串、结构体、单元格数组
1 | %% Variables:string,structure,cell(字符串,结构体,单元格) |
3.2 储存数据
1 | %% File Access (储存数据) |
4. 初阶绘图
1 | %% 初阶绘图 |
5.1 高阶绘图
1 | %% 绘制基本图形(普通、半对数和全对数图) |
5.2 填充
1 | %% fill(填充) |
6. GUI
GUIDE 已在 MATLAB R2025a 中移除,当前版本不能再通过 guide 命令新建或可视化编辑界面。新项目统一使用 App Designer:
1 | appdesigner |
App Designer 将拖放式界面设计、回调代码和现代 UI 组件整合在 .mlapp 文件中。也可以使用 uifigure、uibutton、uiaxes 等函数通过代码创建界面。
处理已有 GUIDE 项目
- 已有 GUIDE 应用的
.m代码仍可编辑,现有应用也仍可运行; - 需要继续开发时,优先使用 MathWorks 的 GUIDE to App Designer Migration Tool 迁移;
- 迁移前备份原
.fig和.m文件,并逐项测试组件属性、回调、布局与第三方控件; - 如果只需偶尔维护,可直接编辑 GUIDE 生成的
.m文件,但不能再用已移除的 GUIDE 布局编辑器。
详细策略见 MathWorks:GUIDE Migration Strategies。
7. 图像处理
1 | %%% Read and Show An Image(读取和显示影像) |
解释:
imread():读取指定路径下的图像文件。imshow():显示图像。immultiply():对图像进行亮度调整(通过将图像像素值乘以一个系数)。imadd():对两幅图像进行加法操作,将其像素值相加。imhist():显示图像的灰度值直方图。histeq():进行直方图均衡化,提高图像的对比度。imrotate():对图像进行旋转操作。imwrite():保存图像到指定路径。
8. 图像分割与处理
1 | %%% Image Thresholding (图像二值化) |
解释:
graythresh():自动找到图像的灰度阈值,用于二值化。imbinarize():使用全局或自适应阈值将图像转换为二值图像。imopen():形态学开运算,用于去除噪声或小物体。imsubtract():图像减法,通常用于背景减除。bwconncomp():查找并统计二值图像中的相连对象;需要标签矩阵时配合labelmatrix()。label2rgb():为标记的对象赋予不同颜色。regionprops():提取图像中标记对象的属性(如面积、周长等)。bwselect():交互式选择图像中的对象。
9.1 多项式微分和积分
1 | %%% Polynomial Differentiation and Integration %%% |
解释:
polyval(a, x):计算多项式 ( f(x) = a_1 x^{n-1} + a_2 x^{n-2} + \ldots + a_n ) 在给定 ( x ) 的值。a是多项式的系数向量。polyder(p):计算多项式的导数。p是多项式的系数向量。polyint(p, C):计算多项式的积分,其中C是积分常数。p是多项式的系数向量。polyval(dp, x):计算导数或积分后的多项式在给定 ( x ) 处的值。
9.2 数值微分和积分
1 | %%% Numerical Differentiation and Integration %%% |
解释:
数值微分:
- **
diff()**:用于计算相邻数据点之间的差值。例如,diff(x)计算x向量中相邻元素的差值。 - 斜率计算:计算两个点之间的斜率,使用
diff(y) ./ diff(x)。 - 导数计算:对于连续的 x 值,我们可以使用
diff(y) ./ diff(x)计算导数。
- **
数值积分:
- 中点法(Midpoint Rule):通过将每个区间的中点的函数值乘以区间宽度
h来近似积分。 - 梯形法(Trapezoid Rule):使用
trapz()函数计算积分。它通过将每个区间的梯形面积累加来近似积分。 - 辛普森法(Simpson’s Rule):通过加权平均值来提高积分精度,尤其是对于非线性函数。
- 中点法(Midpoint Rule):通过将每个区间的中点的函数值乘以区间宽度
函数句柄(Function Handles):
- 使用
@符号创建函数句柄,可以将函数作为参数传递给其他函数,例如integral()、integral2()和integral3()。
- 使用
10. 符号求解和数值根求解
1 | %%% Symbolic Root Finding Approach 解析解(符号求解) %%% |
解释:
符号求解:
- 符号变量定义:
syms和sym用于定义符号变量,便于进行符号计算。 - 方程求解:使用
solve()函数求解符号方程,支持求解单个方程或方程组。 - 符号微分和积分:使用
diff()和int()计算函数的导数和积分。
- 符号变量定义:
函数句柄与数值求解:
- **
fsolve()**:用于求解非线性方程,提供初始猜测值和选项参数。 - **
fzero()**:用于求解方程的零点,需要提供初始猜测值,并且函数必须穿过 x 轴。 - 多项式根:使用
roots()函数求解多项式的根。
- **
二分法与牛顿法:
- 这些方法用于数值求解方程的根,具体实现可以参考相关的算法代码。
递归函数:
- 示例展示了如何编写递归函数计算阶乘。
这些内容帮助初学者理解符号计算和数值求解的基本方法,并展示了 MATLAB 中相关功能的使用方法。
11. 线性方程
1 | %%% Linear Equation 线性方程式 %%% |
解释:
高斯消去法(Gaussian Elimination):
- 使用
rref()函数将增广矩阵化为简化行最简形式,从而求解线性方程组。
- 使用
LU 分解(LU Factorization):
- 使用
lu()函数将矩阵分解为下三角矩阵L和上三角矩阵U,以及置换矩阵P。LU 分解在解线性方程组和计算矩阵的行列式等方面非常有用。
- 使用
线性方程求解与显式逆矩阵:
inv(A)*b是显式求逆法,不是克莱默法则。MathWorks 建议用A\b直接求解,通常速度更快、残差更小;只有确实需要逆矩阵本身时才使用inv(A)。
矩阵条件数(Matrix Condition Number):
- 使用
cond()函数计算矩阵的条件数,条件数高表示矩阵可能接近奇异,可能影响求解的稳定性。
- 使用
特征值和特征向量(Eigenvalues and Eigenvectors):
- 使用
eig()函数计算矩阵的特征值和特征向量,特征值和特征向量在许多线性代数问题中都非常重要。
- 使用
矩阵指数(Matrix Exponential):
- 使用
expm()函数计算矩阵的指数,用于解决涉及微分方程的线性系统。结果可视化为三维图形。
- 使用
12. 统计功能及其应用
1 | %%% Statistics 统计 %%% |
解释:
频数图(Bar, Area, Stem):
bar(x, freqy):绘制条形图,其中x表示数据点,freqy表示每个数据点的频数。area(x, freqy):绘制面积图,以展示数据的分布。stem(x, freqy):绘制离散数据的垂直线图,用于显示每个数据点的频数。
箱线图(Boxplot):
boxplot(marks):绘制箱线图,展示数据的分布特征,包括中位数、四分位数和异常值。prctile(marks, [25 50 75]):计算数据的25%、50%(中位数)、75%四分位数。
偏度(Skewness)和峰度(Kurtosis):
skewness(X):计算数据的偏度,描述数据分布的对称性。kurtosis(X):计算数据的峰度,描述数据分布的尖峭程度。偏度和峰度帮助分析数据的分布形态。
绘制不同分布的箱线图:
boxplot(X, {'Right-skewed', 'Symmetric', 'Left-skewed'}):展示三种不同偏度的分布,帮助理解偏度对数据分布的影响。
13. 简单线性回归与插值方法
1. 简单线性回归
多项式曲线拟合(Polynomial Curve Fitting):
使用 polyfit 函数进行多项式拟合。例如,进行线性回归:
1 | x = [-1.2 -0.5 0.3 0.9 1.8 2.6 3.0 3.5]; |
线性相关性分析:
检验 x 和 y 是否存在线性关系:
1 | x = [-1.2 -0.5 0.3 0.9 1.8 2.6 3.0 3.5]; |
高阶多项式回归:
进行不同阶数的多项式回归:
1 | x = [-1.2 -0.5 0.3 0.9 1.8 2.6 3.0 3.5]; |
多变量回归:
进行多元线性回归分析:
1 | load carsmall; |
2. 内插与回归
线性内插(Linear Interpolation):
1 | x = linspace(0, 2*pi, 40); |
立方样条与赫尔米特多项式:
1 | x = -3:3; |
二维插值(interp2):
1 | xx = -2:.5:2; |
总结
- 线性回归:用
polyfit和polyval进行多项式拟合。检查线性相关性使用corrcoef。 - 插值:用
interp1进行一维内插,用spline进行平滑内插。对于二维数据,使用interp2进行内插,并比较不同插值方法(线性、立方等)的效果。





