[个人笔记]matlab教程07

小朋友,你学会了吗

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

插值与拟合

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

一维插值和网格插值函数说明
interp1一维数据插值(表查找)
interp2meshgrid 格式的二维网格数据的插值
interp3meshgrid 格式的三维网格数据的插值
interpnndgrid 格式的一维、二维、三维和 N 维网格数据的插值

meshgridndgrid,前者是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运行就可以打开。在这里插入图片描述

小波分析

主要应用于信号处理、图像处理、语音分析以及其他非线性科学领域。
摩尔斯小波的解释
小波(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是扩展模式。
扩展模式有下面几种

modeDWT 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')

运行结果
在这里插入图片描述
第九章综合应用没有看,它和前面的都是概率问题,有时间补完概率后学习

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
小波变换的图像处理%MATLAB2维小波变换经典程序 % FWT_DB.M; % 此示意程序用DWT实现二维小波变换 % 编程时间2004-4-10,编程人沙威 %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%% clear; clc; T=256; % 图像维数 SUB_T=T/2; % 子图维数 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 1.调原始图像矩阵 load wbarb; % 下载图像 f=X; % 原始图像 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 2.进行二维小波分解 l=wfilters('db10','l'); % db10(消失矩为10)低通分解滤波器冲击响应(长度为20) L=T-length(l); l_zeros=[l,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂 h=wfilters('db10','h'); % db10(消失矩为10)高通分解滤波器冲击响应(长度为20) h_zeros=[h,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂 for i=1:T; % 列变换 row(1:SUB_T,i)=dyaddown( ifft( fft(l_zeros).*fft(f(:,i)') ) ).'; % 圆周卷积FFT row(SUB_T+1:T,i)=dyaddown( ifft( fft(h_zeros).*fft(f(:,i)') ) ).'; % 圆周卷积FFT end; for j=1:T; % 行变换 line(j,1:SUB_T)=dyaddown( ifft( fft(l_zeros).*fft(row(j,:)) ) ); % 圆周卷积FFT line(j,SUB_T+1:T)=dyaddown( ifft( fft(h_zeros).*fft(row(j,:)) ) ); % 圆周卷积FFT end; decompose_pic=line; % 分解矩阵 % 图像分为四块 lt_pic=decompose_pic(1:SUB_T,1:SUB_T); % 在矩阵左上方为低频分量--fi(x)*fi(y) rt_pic=decompose_pic(1:SUB_T,SUB_T+1:T); % 矩阵右上为--fi(x)*psi(y) lb_pic=decompose_pic(SUB_T+1:T,1:SUB_T); % 矩阵左下为--psi(x)*fi(y) rb_pic=decompose_pic(SUB_T+1:T,SUB_T+1:T); % 右下方为高频分量--psi(x)*psi(y) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3.分解结果显示 figure(1); colormap(map); subplot(2,1,1); image(f); % 原始图像 title('original pic'); subplot(2,1,2); image(abs(decompose_pic)); % 分解后图像 title('decomposed pic'); figure(2); colormap(map); subplot(2,2,1); image(abs(lt_pic)); % 左上方为低频分量--fi(x)*fi(y) title('\Phi(x)*\Phi(y)'); subplot(2,2,2); image(abs(rt_pic)); % 矩阵右上为--fi(x)*psi(y) title('\Phi(x)*\Psi(y)'); subplot(2,2,3); image(abs(lb_pic)); % 矩阵左下为--psi(x)*fi(y) title('\Psi(x)*\Phi(y)'); subplot(2,2,4); image(abs(rb_pic)); % 右下方为高频分量--psi(x)*psi(y) title('\Psi(x)*\Psi(y)'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 5.重构源图像及结果显示 % construct_pic=decompose_matrix'*decompose_pic*decompose_matrix; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% l_re=l_zeros(end:-1:1); % 重构低通滤波 l_r=circshift(l_re',1)'; % 位置调整 h_re=h_zeros(end:-1:1); % 重构高通滤波 h_r=circshift(h_re',1)'; % 位置调整 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% top_pic=[lt_pic,rt_pic]; % 图像上半部分 t=0; for i=1:T; % 行插值低频 if (mod(i,2)==0) topll(i,:)=top_pic(t,:); % 偶数行保持 else t=t+1; topll(i,:)=zeros(1,T); % 奇数行为零 end end; for i=1:T; % 列变换 topcl_re(:,i)=ifft( fft(l_r).*fft(topll(:,i)') )'; % 圆周卷积FFT end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bottom_pic=[lb_pic,rb_pic]; % 图像下半部分 t=0; for i=1:T; % 行插值高频 if (mod(i,2)==0) bottomlh(i,:)=bottom_pic(t,:); % 偶数行保持 else bottomlh(i,:)=zeros(1,T); % 奇数行为零 t=t+1; end end; for i=1:T; % 列变换 bottomch_re(:,i)=ifft( fft(h_r).*fft(bottomlh(:,i)') )'; % 圆周卷积FFT end; construct1=bottomch_re+topcl_re; % 列变换重构完毕 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% left_pic=construct1(:,1:SUB_T); % 图像左半部分 t=0; for i=1:T; % 列插值低频 if (mod(i,2)==0) leftll(:,i)=left_pic(:,t); % 偶数列保持 else t=t+1; leftll(:,i)=zeros(T,1); % 奇数列为零 end end; for i=1:T; % 行变换 leftcl_re(i,:)=ifft( fft(l_r).*fft(leftll(i,:)) ); % 圆周卷积FFT end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% right_pic=construct1(:,SUB_T+1:T); % 图像右半部分 t=0; for i=1:T; % 列插值高频 if (mod(i,2)==0) rightlh(:,i)=right_pic(:,t); % 偶数列保持 else rightlh(:,i)=zeros(T,1); % 奇数列为零 t=t+1; end end; for i=1:T; % 行变换 rightch_re(i,:)=ifft( fft(h_r).*fft(rightlh(i,:)) ); % 圆周卷积FFT end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% construct_pic=rightch_re+leftcl_re; % 重建全部图像 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 结果显示 figure(3); colormap(map); subplot(2,1,1); image(f); % 源图像显示 title('original pic'); subplot(2,1,2); image(abs(construct_pic)); % 重构源图像显示 title('reconstructed pic'); error=abs(construct_pic-f); % 重构图形与原始图像误值 figure(4); mesh(error); % 误差三维图像 title('absolute error display');
郭彦甫是台大的一位教授,他提供了一份关于Matlab教程笔记。你可以通过以下链接下载他的PPT文件:\[1\]https://pan.baidu.com/s/1VXdy3HCBPexMK0csyehiZA 提取码:2io1。此外,如果你需要更多关于Matlab的帮助,你可以参考Matlab官方的帮助文档:\[1\]https://ww2.mathworks.cn/help/。这些资源应该能够帮助你更好地学习和使用Matlab。 请注意,我无法提供具体的教程内容,因为我只能引用提供的资料。如果你有具体的问题或需要更多的帮助,请告诉我,我会尽力回答。 #### 引用[.reference_title] - *1* *2* [【台大郭彦甫】Matlab入门教程超详细学习笔记七:数值微积分(附PPT链接)](https://blog.csdn.net/qq_42995065/article/details/124225215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [台湾国立大学郭彦甫Matlab教程笔记(12) advanced 2D plot 下](https://blog.csdn.net/shizheng_Li/article/details/99827483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值