🏠 回到主页

Matlab 笔记---学习记录


1.11 writed by luwei

本文相关的仓库地址:Matlab入门学习

基础语法

变量注释与运算符

清除终端内容

运算符

算数描述关系 逻辑 位运算 赋值 
+加法==等于&&逻辑与(短路运算)bitand按位与=赋值
-减法~=不等于||逻辑或(短路运算)bitor按位或+=加赋值
*矩阵乘法<小于&逐元素逻辑与bitxor按位异或-=减赋值
.*逐元素乘法<=小于等于|逐元素逻辑或bitcmp按位取反*=乘赋值
/矩阵右除>大于~逻辑非bitshift位移/=除赋值
./逐元素右除>=大于等于    ^=幂赋值
^矩阵幂        

特殊运算符:

注释

基本运算

rand、randi和randn的区别

image-20241011193916905

元胞数组

image-20241011195713532

Note

MATLAB是从1开始的不是从0开始的,这与绝大部分的编程语言不一样。

结构体

矩阵操作

矩阵的数学运算

矩阵创建、矩阵构造拼接与逻辑矩阵

查找矩阵中的非零元素

用矩阵除法求方程组的解

在 MATLAB 中,可以使用矩阵除法对线性方程组进行求解。如果你有一个线性方程组的形式:

Ax=b

其中 A 是系数矩阵,x 是未知数向量,b 是常数向量,你可以使用矩阵左除操作符 \ 来求解。

假设我们有以下线性方程组:

2x1+3x2=54x1+x2=6

我们可以将其表示为矩阵形式 Ax=b,其中:

A=[2341],x=[x1x2],b=[56]

代码示例:

步骤如下:

  1. 定义矩阵:

    • A 是系数矩阵,包含方程的系数。

    • b 是常数向量,包含方程右侧的常数。

  2. 矩阵左除:

    • 使用 A \ b 计算 x。这是 MATLAB 中求解线性方程组的标准方法,相当于求解 Ax=b

  3. 结果显示:

    • 使用 disp 函数显示解。

注意事项:

使用矩阵除法在 MATLAB 中求解线性方程组是一种高效且简洁的方法。只需定义系数矩阵和常数向量,然后使用左除操作符 \ 即可得到解。

逻辑与流程控制

函数文件和脚本文件

函数文件关键字:function,函数名与文件名一样,需要与脚本文件在同一工作路径下

示例:创建一个简单的函数文件 add.m

可以在脚本文件中调用该函数文件,例如:sum = add(3, 5); % sum 将为 8

常用函数

复数运算函数表

函数名说明
real(z)返回复数z的实部
imag(z)返回复数z的虚部
angle(z)返回复数z的幅角
abs(z)返回复数z的模
conj(z)返回复数z的共轭复数
complex(a,b)以a和b分别作为实部和虚部,创建复数z

常用数学函数

常用函数含义
sin(x)正弦函数,以“弧度”为单位
sqrt(x)平方根函数
exp(x)指数函数
zeros(m,n)创建m行n列的零矩阵
ones(m,n)创建m行n列的矩阵,矩阵的所有元素为1
size(A)计算矩阵A各维尺寸。size(A,1) ; size(A,2); [m1,m2] =size(A)
length(A)计算矩阵A最大维尺寸
rand(m,n)产生m×n阶由0-1之间均匀取值的数值组成的矩阵

矩阵函数

常用函数含义
det(A)计算方阵行列式
rank(A)计算矩阵的秩
inv(A)求逆矩阵
find(表达式)查找符合表达式的元素并返回其下标
max(A)数组中各列的最大值
min(A)数组中各列的最小值
mean(A)数组中各列的平均值
std(A)数组中各列的标准差
size(A)数组的行列数
length(A)数组的最大维数

nargin函数,返回接收参数

在MATLAB中,nargin是一个内置函数,用于返回函数实际接收的输入参数的个数。在编写函数时,nargin可以帮助你根据输入参数的个数来决定函数应执行的操作。

find函数,返回符合条件的数组下标

floor函数,确保变量是否为整数

floor(N) == N 的作用是确保 N 是一个整数。

具体来说:

因此,floor(N) == N 这个条件用来判断 N 是否为整数。

判断函数isnumeric、isscalar、isempty、isnan

isnumeric(N):检查N是否是数值。

isscalar(N):检查N是否是标量。

isempty(N):检查N是否为空。

isnan(N) :isnan 函数在 MATLAB 中用于检查输入是否为 "Not-a-Number" (NaN) 值。isnan 返回一个逻辑数组,其中包含 true 表示对应位置的元素为 NaN,false 则表示对应位置的元素不是 NaN。

类型转换函数

int2str(N) :将N转换为字符串

str2double :将输入转换为数字

num2str : 用于将数值转换为字符串。这个函数在需要将数值与其它字符串连接或显示时非常有用。

显示函数fprintf、disp

length函数与size函数

错误信息抛出error

打印错误信息

请求用户输入input

linspace与logspace

MATLAB绘图

MATLAB 进阶绘图_matlab horizontalalignment-CSDN博客

二维平面绘图

数据处理

绘图设置

多个图表绘制

将多个曲线绘制在同一张图中

绘图颜色参数选项

颜色字符颜色字符
r粉红m
绿gc
bw
yk

image-20241015202701368

图例标注

不同图形的绘制

三维图像的绘制

mesh 与 surf

image-20241220224010856

mesh 函数用于绘制三维网格图,它显示了一个网格的线条和表面轮廓。surf 函数用于绘制三维表面图,它不仅显示网格,还通过面填充色彩来表示数据值。

Note

colorbar; % 显示颜色条

shading interp; % 平滑着色

view(45, 30); % 设置观察角度

meshc() 与 surfc()

meshc()surfc()是在mesh()surf()函数的基础上,创建三维网格图,并在底部添加等高线图。

image-20241220225818916

信号产生与处理

考虑生成采样频率为 1000 Hz 的数据。 一个合适的时间矢量是

image-20241220233325431

产生 1.5 秒钟的 50 Hz锯齿波(分别为方波),采样率为 10 kHz,同理如下

image-20241220235005992

常用的信号函数,使用方法同理

image-20241221000511118

添加高斯噪声

去除信号的线性趋势

detrend 函数可以从信号中去除线性趋势。

示例 1:去除线性趋势

image-20241221112153920

示例 2:去除多项式趋势,去除非线性趋势可以使用多项式拟合,然后从原始信号中减去拟合的非线性趋势。

image-20241221112453311

数据拟合与趋势分析

polyfit 函数用于拟合多项式模型。

polyval 函数用于计算多项式在给定点的值。它的基本语法是:

这两个函数结合使用可以方便地进行数据拟合和趋势分析。

题目

第一期--数组与矩阵

1.已知变量t的取值范围为 0~2π –产生以π/4为步长的行向量t1; –利用函数linspace函数产生10个元素的行向量t2; –求y1 = sin(t1), y2 = cos(t2); –将y1中小于0的数去除,将y2中小于0的数替换为0;

2.矩阵操作

image-20241011183646687

3.矩阵产生

image-20241016161046442

4.用“from : step : to”方式得到从0~4π步长为0.4π的变量X1;用linspace函数得到0~4π分成10点的变量X2

5.输入矩阵 |123456789|,使用全下标方式取出元素“3”,使用单下标方式取出元素“8”,取出后面两行子矩阵块,使用逻辑矩阵方式取出

Error: You can't use 'macro parameter character #' in math mode

y\left( x \right) =\left{ \begin{array}{c} \cos x, x\leqslant 0\ -x-x^2, 0<x\leqslant 3\ e^x+2\sqrt{x}, x>3\ \end{array} \right. $$

第三期--平面绘图

1.在[0,6π]区间内,绘制曲线 y=1eαtcos(βt),α=0.3,β=0.7 image-20241118210610766

实际运行图:img

2.Stack the horizontal bar chart.堆叠水平条形图。 image-20241118210727014

实际运行图:image-20241118210804379

3.Separate all the pieces in the 3D pie chart 分离 3D 饼图中的所有部分 image-20241118210822063

实际运行图:image-20241118210948194

4.Plot a hexagon on a polar chart 在极坐标图上绘制六边形 image-20241118211033046

实际运行图:img

5.Plot a function:f(t)=sin(πt24),Add the points sampled at 5 Hz using stem()绘制函数图:f(t)=sin(πt24)使用 stem() 添加以 5 Hz 频率采样的点 image-20241118211107698

实际运行图:image-20241118212254167

6.Various Contour PlotsCombine the contour techniques to generate a figure as shown below. 各种等高线图将等高线技术相结合,生成如下图所示的图形。 image-20241118212331916

实际运行图:img

7.Consider two electrocardiogram (ECG) signals with different trends. Load the signals and plot them.

考虑两个趋势不同的心电图(ECG)信号。 加载信号并绘制曲线。 image-20241118212358437

实际运行图:img

第四期--信号产生

1.Generates 10 seconds of a square wave with a period of π, set the sample rate to 1 kHz and specify a duty cycle of 30%. Add white Gaussian noise with a variance of 1/100 .

产生 10 秒钟的方波,周期为π,设置采样率为 1 kHz,占空比为 30%。 添加方差为 1/100 的白高斯噪声。

image-20241221002451410

第五期--信号趋势去除与数据拟合

1.Remove Linear Trends from Data

此示例说明如何从股票每日收盘价中去除线性趋势,以重点观察整体涨幅的价格波动。如果数据确实有趋势,则去除线性趋势会强制其均值为零并减少总体变化。该示例使用从 gallery 函数获取的分布来模拟股价波动。 创建一个模拟数据集并计算其均值。sdata 表示股票的每日价格变动。

求出数据的平均值。

绘制和标记数据。可以看到,数据显示股价呈系统性增长,效果图如图所示

image-20241221104732201

应用 detrend,它对 sdata 执行线性拟合,然后对其进行去除线性趋势处理。从输入中减去输出,得出计算所得的趋势线。

求出去除线性趋势后的数据的平均值。

去除线性趋势后,数据均值非常接近 0,与预期相符。 将趋势线、去除线性趋势后的数据及其均值添加到图中,以显示结果。效果如图所示。

image-20241221105437019

2.Fit Polynomial to Set of Points 将多项式拟合到点集

Create a vector of 5 equally spaced points in the interval [1,2], and evaluate at those points.

在区间 [1,2] 内创建由 5 个等距点组成的向量,并在这些点上求值。

Fit a polynomial of degree 4 to the 5 points. In general, for n points, you can fit a polynomial of degree n-1 to exactly pass through the points.在 5 个点上拟合一条阶数为 4 的多项式。 一般来说,对于 n 个点,可以拟合出一个 n-1 度的多项式来精确通过这些点。

Evaluate the original function and the polynomial fit on a finer grid of points between 1 and 3.在 1 至 3 点之间的更细网格上评估原始函数和多项式拟合。

Plot the function values and the polynomial fit in the wider interval [1,3], with the points used to obtain the polynomial fit highlighted as circles. The polynomial fit is good in the original [1,2] interval, but quickly diverges from the fitted function outside of that interval.在更宽的区间 [1,3] 内绘制函数值和多项式拟合图,并用圆圈标出用于获得多项式拟合的点。 在原始区间 [1,2] 内,多项式拟合效果良好,但在该区间外,拟合函数迅速发散。

image-20241221111709371

🏠 我的博客