插值与拟合
最优化计算
概率统计与分析
小波分析
插值
插值定义:插值是在一组已知数据点的范围内添加新数据点的技术。您可以使用插值来填充缺失的数据、对现有数据进行平滑处理以及进行预测等。
插值包含如下的函数方法
一维插值和网格插值函数 | 说明 |
---|---|
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');
执行后效果
上面的例子默认插值方式是线性的,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,概率啊……又要去学概念了,突然觉得考数学二亏了。
主要应用于信号处理、图像处理、语音分析以及其他非线性科学领域。
对摩尔斯小波的解释
小波(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])
另外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了
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')