Matlab学习

Matlab学习
落魄君子Matlab基础
关于基础的Matlab的基础命令,命令在B站上的郭彥甫老师MATLAB课程+AI整理的,B站链接和油管链接
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 早期版本中的图形用户界面 (GUI) 设计工具,它允许用户以可视化方式创建应用程序界面(如按钮、菜单、图表等),并生成相应的 .fig 和 .m 文件来控制界面和响应事件。自 MATLAB R2016a 以来,appdesigner 被推荐为创建应用的工具,它整合了界面设计和代码管理,功能更为强大。
关于 guide 的操作步骤:
启动
guide
通过命令窗口输入guide,会弹出一个 GUI 设计工具的窗口,用户可以从模板中选择现有布局或创建一个空白布局。设计界面
在图形设计器中,拖放所需的 UI 元素(按钮、标签、输入框等)来构建界面。所有组件都会显示在figure窗口中。生成
.fig和.m文件
保存设计时,guide会生成两个文件:.fig:存储界面布局信息。.m:包含响应事件的回调函数,用来控制界面行为。
编辑代码
在生成的.m文件中,可以编写对应的回调函数,定义按钮点击、输入等事件触发的操作。可以通过 MATLAB 编辑器修改.m文件来实现特定功能。
App Designer 的替代功能:
启动 App Designer
通过命令appdesigner启动,它是创建和编辑 MATLAB 应用程序的现代工具,集成了 GUI 设计和代码开发环境。使用 App Designer
- 图形设计:与 
guide类似,可以拖放组件设计应用程序的用户界面。 - 代码编辑:App Designer 在界面中提供一个集成的代码窗口,可以同时查看和编辑 UI 组件的行为,代码和界面设计紧密结合。
 
- 图形设计:与 
 推荐使用 App Designer 的原因:
- 提供了更灵活的设计功能。
 - 支持对象属性和事件的更好管理。
 - 提供了更现代的 UI 组件。
 - 自动生成面向对象的代码,便于管理应用程序。
 
guide 已不再建议使用,转而推荐使用 appdesigner,尤其对于新项目或复杂应用开发来说,App Designer 更适合长期维护和扩展。
7. 图像处理
1  | %%% Read and Show An Image(读取和显示影像)  | 
解释:
imread():读取指定路径下的图像文件。imshow():显示图像。immultiply():对图像进行亮度调整(通过将图像像素值乘以一个系数)。imadd():对两幅图像进行加法操作,将其像素值相加。imhist():显示图像的灰度值直方图。histeq():进行直方图均衡化,提高图像的对比度。imrotate():对图像进行旋转操作。imwrite():保存图像到指定路径。
8. 图像分割与处理
1  | %%% Image Thresholding (图像二值化)  | 
解释:
graythresh():自动找到图像的灰度阈值,用于二值化。im2bw():将图像转换为二值图像。imopen():形态学开运算,用于去除噪声或小物体。imsubtract():图像减法,通常用于背景减除。bwlabel():标记二值图像中的相连对象。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 分解在解线性方程组和计算矩阵的行列式等方面非常有用。 
- 使用 
 克莱默法则(Cramer’s Method):
- 使用 
inv()函数计算矩阵的逆矩阵来求解线性方程组。注意:矩阵的逆可能不存在,尤其是当矩阵接近奇异时。 
- 使用 
 矩阵条件数(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进行内插,并比较不同插值方法(线性、立方等)的效果。 





