[个人笔记]matlab教程07

小朋友,你学会了吗

插值与拟合
最优化计算
概率统计与分析
小波分析

插值与拟合

插值
插值定义:插值是在一组已知数据点的范围内添加新数据点的技术。您可以使用插值来填充缺失的数据、对现有数据进行平滑处理以及进行预测等。
插值包含如下的函数方法

一维插值和网格插值函数 说明
interp1 一维数据插值(表查找)
interp2 meshgrid 格式的二维网格数据的插值
interp3 meshgrid 格式的三维网格数据的插值
interpn ndgrid 格式的一维、二维、三维和 N 维网格数据的插值

meshgrid和ndgrid,前者是matlab中应用软件的函数,后者是自带函数,两者区别在于meshgrid只能应用于2、3维,而ndgrid可以应用到高维度上。这点在函数描述上也能看出。
matlab2019建议不使用interp1函数,建议使用griddedInterpolant,但是……看不懂……,所以还是写interp1吧
vq = interp1(x,v,xq) 使用线性插值返回一维函数在特定查询点的插入值。向量 x 包含样本点,v 包含对应值 v(x)。向量 xq 包含查询点的坐标。
通过下面给的例子来进行改函数讲解(帮助自带的例子)

	x = 0:pi/4:2*pi; %创建的样本x值32个
	v = sin(x);%创建的样本y值
	xq = 0:pi/16:2*pi;%插值对应的样本个数32个
	figure%这是创建图形窗口函数
	vq1 = interp1(x,v,xq);%进行插值,线性插值,所以两样本点之间的点都是线性连接的,平均两个点间插入三个点,共8组。
	plot(x,v,'o',xq,vq1,':.');%把两组点都绘制到图上
	xlim([0 2*pi]);%这是更改坐标的函数
	title('(Default) Linear Interpolation');

执行后效果
[个人笔记]matlab教程07_第1张图片
上面的例子默认插值方式是线性的,interp1是可以改变插值方式的,vq = interp1(x,v,xq,method),method可以是’linear’、‘nearest’、‘next’、‘previous’、‘pchip’、‘cubic’、‘v5cubic’、‘makima’ 或 ‘spline’。默认方法为 ‘linear’。interp1还包含其他写法,其他的详细的形式参见interp1帮助。

Vq = interp2(X,Y,V,Xq,Yq) 使用线性插值返回双变量函数在特定查询点的插入值。结果始终穿过函数的原始采样。X 和 Y 包含样本点的坐标。V 包含各样本点处的对应函数值。Xq 和 Yq 包含查询点的坐标。相比一维坐标的插值使用方法,二维也类似。插值方式’linear’、‘nearest’、‘cubic’、‘makima’ 或 ‘spline’。默认方法为 ‘linear’。
拟合
多项式拟合使用polyfit函数。

语法 说明
p = polyfit(x,y,n) 返回阶数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最小二乘方式中)。p 中的系数按降幂排列,p 的长度为 n+1
[p,S] = polyfit(x,y,n) 还返回一个结构体 S,后者可用作 polyval 的输入来获取误差估计值。
[p,S,mu] = polyfit(x,y,n) 还返回 mu,后者是一个二元素向量,包含中心化值和缩放值。mu(1) 是 mean(x),mu(2) 是 std(x)。

在学这些之前,我也用过matlab中的APP实现拟合,而且这个app可以实现非多项式拟合,感觉也可以试一试。
在这里插入图片描述

最优化计算

一般使用方法:线性规划、非线性规划、最小二乘法等
优化计算的常规步骤:类型确定-求解器选择-设置变量-目标函数-约束条件-参数设置-求解并检查结果
此问题又可以开单独一篇优化类文章了,教程里就按上面两条进行了简单介绍,然后一个例子带过,个人感觉少量许多值得讨论的东西。明天在这里补个优化问题的文章
需要参考的matlab帮助文档:
linprog
First Choose Problem-Based or Solver-Based Approach
Getting Started with Optimization Toolbox

概率统计与分析

disttool工具,在命令行窗口输入disttool运行就可以打开。
emmmmm,概率啊……又要去学概念了,突然觉得考数学二亏了。
[个人笔记]matlab教程07_第2张图片

小波分析

主要应用于信号处理、图像处理、语音分析以及其他非线性科学领域。
对摩尔斯小波的解释
小波(Wavelet)这一术语,顾名思义,“小波”就是小的波形。所谓“小”是指它具有衰减性;而称之为“波”则是指它的波动性,其振幅正负相间的震荡形式。与Fourier变换相比,小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。有人把小波变换称为“数学显微镜”。
其原理是将函数f(t)表示为一系列逐次逼近表达式, 其中每一个都是f(t)动经过平滑后的形式,它们分别对应不同的分辨率。
wfilters函数,小波滤波器

函数 说明
[LoD,HiD,LoR,HiR] = wfilters(wname) 返回与重建和分解小波相关的四个低通和高通,分解和重构滤波器 wname。
[F1,F2] = wfilters(wname,type) 返回type与重建或分解小波相关的一对滤波器wname。例如, wfilters(‘db6’,‘h’)返回一对高通滤波器 HiD并HiR与db6小波关联 。

分解与重建:重建是将输出信号恢复为原来的样子,那么分解就恰好相反。(此处是百度后自己的一个认知,未必正确。)

	wname = 'db5';
	[LoD,HiD,LoR,HiR] = wfilters(wname); 
	subplot(2,2,1)%subplot用于创作坐标区,2X2的网格,使用第一块
	stem(LoD)%绘制离散序列数据,低通分解的
	title('Decomposition Lowpass Filter')%标题
	subplot(2,2,2)
	stem(HiD)
	title('Decomposition Highpass Filter')
	subplot(2,2,3)
	stem(LoR)
	title('Reconstruction Lowpass Filter')
	subplot(2,2,4)
	stem(HiR)
	title('Reconstruction Highpass Filter')
	xlabel(['The four filters for ',wname])

[个人笔记]matlab教程07_第3张图片
另外wname只能赋以下内容(正交或双正交小波的名称,指定为此处列出的值之一。)

波名称 可填的内容
aubechies ‘db1’ or ‘haar’, ‘db2’, …, ‘db10’, …, ‘db45’
Coiflets ‘coif1’, …, ‘coif5’
Symlets ‘sym2’, …, ‘sym8’, …,‘sym45’
Fejer-Korovkin filters ‘fk4’, ‘fk6’, ‘fk8’, ‘fk14’, ‘fk22’
Discrete Meyer ‘dmey’
Biorthogonal ‘bior1.1’, ‘bior1.3’, ‘bior1.5’‘bior2.2’, ‘bior2.4’, ‘bior2.6’, ‘bior2.8’‘bior3.1’, ‘bior3.3’, ‘bior3.5’, ‘bior3.7’‘bior3.9’, ‘bior4.4’, ‘bior5.5’, ‘bior6.8’
Reverse Biorthogonal ‘rbio1.1’, ‘rbio1.3’, ‘rbio1.5’‘rbio2.2’, ‘rbio2.4’, ‘rbio2.6’, ‘rbio2.8’‘rbio3.1’, ‘rbio3.3’, ‘rbio3.5’, ‘rbio3.7’‘rbio3.9’, ‘rbio4.4’, ‘rbio5.5’, ‘rbio6.8’

[F1,F2] = wfilters(wname,type)这个函数的type用于指定绘制的图

type 描述
‘d’ 分解过滤器(LoD和 HiD)
‘r’ 重建过滤器(LoR和 HiR)
‘l’ 低通滤波器(LoD和 LoR)
‘h’ 高通滤波器(HiD和 HiR)

为了验证我的想法会否正确,使用之前的例子验证一下。

	 wname = 'db5';
	 [F1,F2] = wfilters(wname,'d');
	 subplot(1,2,1);
	 stem(F1) 
	 title('Decomposition Lowpass Filter')
  	subplot(1,2,2)
   	stem(F2)
	title('Decomposition Highpass Filter')

运行结果和预测一致
另外,使用xlim函数可以设置x的查询范围,例如xlim([0 10]),x的范围就变成0-10了
[个人笔记]matlab教程07_第4张图片
dwt函数,单级一维离散小波变换

语法 说明
[cA,cD] = dwt(x,wname) 使用指定的小波 ,返回向量的单级离散小波变换(DWT)wname。小波必须由识别 wavemngr。dwt返回DWT 的近似系数向量 cA和细节系数向量cD。
[cA,cD] = dwt(x,LoD,HiD) 使用缩放(低通)滤波器LoD和小波(高通)滤波器返回单级DWT HiD。过滤器的长度必须相同。
[cA,cD] = dwt( ,‘mode’,extmode) 返回具有指定扩展模式的单级DWT extmode。

前两个语句的用法和上面的wfilters有些相似。
语句中x是输入数据;wname是分析小波;extmode是扩展模式。
扩展模式有下面几种

mode DWT Extension Mode
‘zpd’ Zero extension
‘sp0’ Smooth extension of order 0
‘spd’ (or ‘sp1’) Smooth extension of order 1
‘sym’ or ‘symh’ Symmetric extension (half point): boundary value symmetric replication
‘symw’ Symmetric extension (whole point): boundary value symmetric replication
‘asym’ or ‘asymh’ Antisymmetric extension (half point): boundary value antisymmetric replication
‘asymw’ Antisymmetric extension (whole point): boundary value antisymmetric replication
‘ppd’ Periodized extension (1)
‘per’ Periodized extension (2)

帮助中先分解信号dwt再恢复信号idwt,只体现出最终结果,感觉效果不明显。
这里我根据教程自己改写了一个(注意’,我在这里写完复制到matlab中被替换成了中文分号,记得检查一下)

	a=randn(1,256);
	b=1.5*sin(1:256);
	s=a+b;
	[cA,cD] = dwt(s,‘dmey’)
	subplot(3,1,1);
	plot(s)
	title('s')
	subplot(3,1,2);
	plot(cA)
	title('cA')
	subplot(3,1,3);
	plot(cD)
	title('cD')

运行结果
[个人笔记]matlab教程07_第5张图片
第九章综合应用没有看,它和前面的都是概率问题,有时间补完概率后学习

你可能感兴趣的:(matlab)