文档库 最新最全的文档下载
当前位置:文档库 › 小波分析MATLAB实例

小波分析MATLAB实例

小波分析MATLAB实例
小波分析MATLAB实例

到小波分析

1 背景

传统的信号理论,是建立在Fourier分析基础上的,而Fourier变换作为一种全局性的变化,其有一定的局限性。在实际应用中人们开始对Fourier变换进行各种改进,小波分析由此产生了。小波分析是一种新兴的数学分支,它是泛函数、Fourier分析、调和分析、数值分析的最完美的结晶;在应用领域,特别是在信号处理、图像处理、语音处理以及众多非线性科学领域,它被认为是继Fourier分析之后的又一有效的时频分析方法。

小波变换是近年发展起来的一种基于时频域的信号分析工具,它具有良好的时频局部性、选基灵活性和去相关性等优点,可用于光谱信号的噪声滤波和基线校正等。此后,多位物理、数学家的合作共同奠定了小波变换的理论和应用基础。由于小波变换能够更精确地分析信号的局部特征,在很多领域得到了越来越多地应用。小波分析的应用领域十分广泛,它包括:数学领域的许多学科;信号分析、图象处理;量子力学、理论物理;军事电子对抗与武器的智能化;计算机分类与识别;音乐与语言的人工合成;医学成像与诊断;地震勘探数据处理;大型机械的故障诊断等方面;例如,在数学方面,它已用于数值分析、构造快速数值方法、曲线曲面构造、微分方程求解、控制论等。在信号分析方面的滤波、去噪声、压缩、传递等。在图象处理方面的图象压缩、分类、识别与诊断,去污等。以及在医学方面的应用,如核磁共振成像时间、提高CT 、B超等分辨率。

2 小波变换的产生及去噪的必要性

我们在一维信号分析中,可知傅里叶变换将信号分解成一系列不同频率的正弦或余弦波的叠加,与之类似,小波变换也可将信号分解成一系列小波函数的叠加,这一系列小波函数都由某个母小波函数经过平移和尺度变换得来。以不规则的小波信号来逼近局部信号显然比用光滑的正弦信号逼近程度要好,而用不同尺度小波对同一信号进行逼近又有利于对信号进行逐步细致的分析,这正是小波分析的基本思想。小波变换采用变化的时频窗,窗口面积固定,但形状可变。分析低频信号时,采用拉伸的小波和长的时间窗以获取足够信息,分析高频信号时,采用压缩小波和短时间窗以获取足够精度。常见的小波函数有Meyer波、Morlet 波、8阶高斯波等。

传统的去噪方法常使用Fourier变换去噪,将含噪信号变换到频域,然后采用低通滤波器进行滤波,但是基于Fourier变换的去噪方法存在着保护信号局部性和抑制噪声之间的矛盾。Fourier变换去噪不能有效的将噪声与有用信号的高频部分和有噪声引起的高频干扰加

以有效的区分开来。这就使得我们在研究信号去噪课题上注意到小波的好处,小波去噪可以很好的保护有用信号的尖峰和突变部分的信号。小波变换具有良好的时频局部化性质,具有以下优点:(1)小波分解可以覆盖整个频域(提供了一个数学上完备的描述);(2)小波变换通过选取合适的滤波器,可以极大的减小或去除所提取得不同特征之间的相关性;(3)小波变换具有“变焦”特性,在低频段可用高频率分辨率和低时间分辨率(宽分析窗口),在高频段,可用低频率分辨率和高时间分辨率(窄分析窗口);(4)小波变换实现上有快速算法(Mallat小波分解算法)。因此采用小波去噪是具有必要性的。

3 小波变换理论

3.1 小波定义

满足以下条件

∞<ψ?

∞ωωωd 02)( (1) 或其等价条件

?∞

∞-=0)(dt t ψ (2)

的函数)(t ψ称为基本小波,或母小波。其中)(ωψ为)(t ψ的傅里叶变换。式(2)说明母小波函数具有一定的振荡性,即包含某种频率特性。

)()(21

,a

b t a t b a -=-ψψ (3) 式中b a ,均为常数,且0>a 。显然,)(,t b a ψ是基本函数)(t ψ先作移位再作伸缩以后得到的。若b a ,不断地变化,我们可得到一族函数)(,t b a ψ。a 为伸缩因子,反映函数的尺度,a<1波形被压缩,越小压缩越厉害,a>1波形被拉伸,越大拉伸越多。b 为平移因子,表示沿t 轴的平移位置。)(,t b a ψ是母小波经移位和伸缩所产生的一族函数,我们称之为小波基函数,或简称小波基。

3.2 小波的特性

连续小波)(,t b a ψ的时频窗口中心和宽度可以精确定位,且都随尺度a 的变化而伸缩。若将时、频域窗口综合考虑,根据公式推导可得时频窗口的面积与尺度a 无关,即时间分辨率和频率分辨率是相互制约的。小波尺度a 与频率ω相对应。当a 变小时,对)(t x 的时域观察范围变窄,但对)(ΩX 在频率观察的范围变宽,且观察的中心频率向高频处移动;反之,当a 变大时,对)(t x 的时域观察范围变宽,频域的观察范围变窄,且分析的中心频率向低频处移动。小波变换恒Q 性质。带宽/中心频率=Q a

a 00=Ω?=Ω?ΩΩ///,不论a 为何值)0(>a ,)(a

t ψ始终保持了和)(t ψ具有性同的品质因数。恒Q 性质是小波变换的一个重要性质,也是区别于其它类型的变换且被广泛应用的一个重要原因。

3.3 连续小波变换和反变换定义

函数)(x f 以小波)(x ψ为基的连续小波变换定义为函数)(x f 和)(,x b a ψ的内积,

?∞∞--ψ>=ψ=

b x a x f f b a W b a f )(1)(,),(, 在1984年,A.Grossman 和J.Morlet 指出,连续小波的逆变换为,

??∞∞-∞∞--ψψ>ψ<=dadb a x f C x f b a b a 2,,)(,2)(

其中,ψC 为母小波y (x )的允许条件(admissible condition),

?∞∞-ψ∞<ψ

=ωωωd C )(?

其中,)(?ωψ

为)(x ψ的傅立叶变换,而)(x ψ是在平方可积的实数空间)(2R L 。 3.4 离散小波变换

在计算连续小波变换时,实际上也是用离散的数据进行计算的,只是所用的缩放因子和

平移参数比较小而已。不难想象,连续小波变换的计算量是惊人的。为了解决计算量的问题,缩放因子和平移参数都选择j

2(j>0的整数)的倍数。使用这样的缩放因子和平移参数的小波变换叫做双尺度小波变换,它是离散小波变换的一种形式。执行离散小波变换的有效方法是使用滤波器。该方法是Mallat 在1988年开发的,叫做Mallat 算法,这种方法实际上是一种信号的分解方法,在数字信号处理中称为双通道子带编码。

3.5 傅里叶分析与小波包分析的比较

从以上分析中可以看出通过傅立叶分析进行滤波得到的结果与小波分析得到的结果有

些差异,主要是由于信号集中在低频部分,噪声分布在高频部分,所以通过低通滤波器进行滤波,不能将有用信号的高频部分和由噪声引起的高频干扰加以有效地区分。若低通滤波器太窄,则在滤波后,信号中仍存在大量的噪声,若低通滤波器太宽,则将一部分有用信号当作噪声被滤掉。因此小波分析对非平稳信号的消噪有着傅立叶分析不可比拟的优点。 4 小波去噪

4.1 小波去噪的原理

小波变换之所以在去噪方面取得成功,在于它的几个特点:1)低熵性。小波系数的稀

疏分布使得信号变换后的熵降低;2)多分辨率性质。由于采用了多分辨率的方法,可以非

常好的刻画信号的非平稳特性,如边缘、尖峰、断点等,以便于特征提取和保护;3)去相关性。因为小波变换可以对信号进行去相关,且噪声在变换后有白化趋势,所以在小波域比在时域更利于去噪;4)小波基选择的多样性。由于小波变换可以灵活选择变换基,所以可以针对不同应用场合选用不同的小波函数,以获得最佳的处理效果。

4.2 小波去噪的模型建立

4.2.1去噪的Matlab程序

局部放电试验所采集的信号中往往混有白噪声、周期干扰信号去除。此处采用常用db 系列小波中的db6小波进行9尺度的多分辨分解后,根据白噪声能量特性,估算各尺度的阈值大小,采用硬值进行处理,后进行重构。Matlab程序如下:

function sd=liu_denoise(mix_signal)

%此函数用于去除白躁信号&周期性干扰信号

%输入参数mix_signal为采集到的信号波形

p=0.6745;

w_dept=9;

w_name='db6';

coef=cell(1,w_dept);

thr=zeros(1,w_dept+1);

[c,l]=wavedec(mix_signal,w_dept,w_name); %对混合信号S进行db6的9尺度一维分解coef(1)={appcoef(c,l,w_name,w_dept)};%计算尺度为9的一维分解低频系数cs=[cs,coef_soft{j}];

thr(1)=median(abs(coef{1}))/p*sqrt(2*log(length(coef{1})));%计算1尺度上的阈值

coef_soft(1)={wthresh(coef{1},'h',thr(1))};%对小波系数进行阈值为thr(1)的硬阈值处理cs=[coef_soft{1}];

for j=2:w_dept+1

coef(j)={detcoef(c,l,w_dept-j+2)};%计算尺度为9到2的各尺度高频小波系数

coef1(j)={detcoef(c,l,w_dept-j+2)};

thr(j)=median(abs(coef{j}))/p*sqrt(2*log(length(coef{j})));%计算9到2各尺度上的阈值coef_soft(j)={wthresh(coef{j},'h',thr(j))};%对小波系数进行阈值为thr(j)的硬阈值处理cs=[cs,coef_soft{j}];

end

sd=waverec(cs,l,w_name); %根据小波系数[cs,l]对信号进行重构

4.2.2仿真分析

为了验证去噪的有效性,先仿真产生一个局放脉冲然后叠加0.1倍白噪声和周期干扰,利用前面的程序去造,结果如图1,从图上可以看到去噪后信号与原始信号幅值、相位都基本没有变化程序如下:

fc=40e4; %振荡频率

t4=0.8e-3; %脉冲起始时间

tn=1e-3; %总时间

x=0:step:tn;

x4=t4:step:tn;

%s4=(exp((t4-x4)*13/t)-exp((t4-x4)*22/t)).*sin(2*pi*fc*x4);

s4=(exp((t4-x4)/tr)-exp((t4-x4)/td)).*sin(2*pi*fc*x4);

s4=[zeros(1,t4/step),s4];

p=tn/step;

n=0.1*randn(1,p); %产生白噪信号

n=[n,0];

s5=0.1*sin(2*pi*10000000*x); %产生周期性干扰信号

s6=s4+n+s5;

sd=liu_denoise(s6);

subplot(311);plot(x,s4);title('单个局放脉冲仿真波形');

subplot(312);plot(x,mix_signal);title('染噪后波形');

subplot(313);plot(x,sd);title('小波去噪后波形');

小波去噪对比图

5 结束语

从上述的利用小波分析对非线性信号的处理中可以看出,小波变换是一种信号的时频分析方法,有很多优点,很适合探测正常信号中夹带的瞬态反常现象并展示其成分,有效区分信号中的突变部分和噪声。小波变换正广泛应用在各种领域里,通过Matlab编制程序进行给定信号的噪声抑制和非平稳信号的噪声消除。基于小波变换的消噪方法是一种提取有用信

号、展示噪声和突变信号的优越方法,具有广阔的实用价值。

matlab小波变换

matlab小波变换 Matlab 1. 离散傅立叶变换的 Matlab实现 Matlab 函数 fft、fft2 和 fftn 分别可以实现一维、二维和 N 维 DFT 算法;而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT 。这些函数的调用格式如下: A=fft(X,N,DIM) 其中,X 表示输入图像;N 表示采样间隔点,如果 X 小于该数值,那么Matlab 将会对 X 进行零填充,否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换。 A=fft2(X,MROWS,NCOLS) 其中,MROWS 和 NCOLS 指定对 X 进行零填充后的 X 大小。别可以实现一维、二维和 N 维 DFT A=fftn(X,SIZE) 其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。 函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致。 别可以实现一维、二维和 N 维 DFT 例子:图像的二维傅立叶频谱 1. 离散傅立叶变换的 Matlab实现% 读入原始图像 I=imread('lena.bmp');函数 fft、fft2 和 fftn 分 imshow(I) % 求离散傅立叶频谱 J=fftshift(fft2(I)); figure;别可以实现一维、二维和 N 维 DFT imshow(log(abs(J)),[8,10]) 2. 离散余弦变换的 Matlab 实现 Matlab

2.1. dct2 函数 功能:二维 DCT 变换 Matlab 格式:B=dct2(A) B=dct2(A,m,n) B=dct2(A,[m,n])函数 fft、fft2 和 fftn 分 说明:B=dct2(A) 计算 A 的 DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.2. dict2 函数 功能:DCT 反变换 格式:B=idct2(A) B=idct2(A,m,n)别可以实现一维、二维和 N 维 DFT B=idct2(A,[m,n]) 说明:B=idct2(A) 计算 A 的 DCT 反变换 B ,A 与 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为m×n。 Matlab 2.3. dctmtx函数 功能:计算 DCT 变换矩阵 格式:D=dctmtx(n) 说明:D=dctmtx(n) 返回一个n×n 的 DCT 变换矩阵,输出矩阵 D 为double 类型。 1. 离散傅立叶变换的 Matlab实现 3. 图像小波变换的 Matlab 实现函数 fft、fft2 和 fftn 分 3.1 一维小波变换的 Matlab 实现 (1) dwt 函数 Matlab

数值分析MATLAB上机实验

数值分析实习报告 姓名:gestepoA 学号:201******* 班级:***班

序言 随着计算机技术的迅速发展,数值分析在工程技术领域中的应用越来越广泛,并且成为数学与计算机之间的桥梁。要解决工程问题,往往需要处理很多数学模型,不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。而且还能减少大量的人工计算。 由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助如MATLAB,C++,VB,JAVA的辅助软件来解决,得到一个满足误差限的解。本文所计算题目,均采用MATLAB进行编程,MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来MATLAB最突出的特点就是简洁,它用更直观的、符合人们思维习惯的代码。它具有以下优点: 1友好的工作平台和编程环境。MATLAB界面精致,人机交互性强,操作简单。 2简单易用的程序语言。MATLAB是一个高级的矩阵/阵列语言,包含控制语言、函数、数据结构,具有输入、输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编好一个较大的复杂的应用程序(M 文件)后再一起运行。 3强大的科学计算机数据处理能力。包含大量计算算法的集合,拥有600多个工程中要用到的数学运算函数。 4出色的图像处理功能,可以方便地输出二维图像,便于我们绘制函数图像。

目录 1 第一题 (4) 1.1 实验目的 (4) 1.2 实验原理和方法 (4) 1.3 实验结果 (5) 1.3.1 最佳平方逼近法 (5) 1.3.2 拉格朗日插值法 (7) 1.3.3 对比 (8) 2 第二题 (9) 2.1实验目的 (9) 2.2 实验原理和方法 (10) 2.3 实验结果 (10) 2.3.1 第一问 (10) 2.3.2 第二问 (11) 2.3.3 第三问 (11) 3 第三题 (12) 3.1实验目的 (12) 3.2 实验原理和方法 (12) 3.3 实验结果 (12) 4 MATLAB程序 (14)

MATLAB小波变换指令及其功能介绍(超级有用)解读

MATLAB小波变换指令及其功能介绍 1 一维小波变换的 Matlab 实现 (1) dwt函数 功能:一维离散小波变换 格式:[cA,cD]=dwt(X,'wname') [cA,cD]=dwt(X,Lo_D,Hi_D)别可以实现一维、二维和 N 维DFT 说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函数 'wname' 对信号X 进行分解,cA、cD 分别为近似分量和细节分量; [cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信 号进行分解。 (2) idwt 函数 功能:一维离散小波反变换 格式:X=idwt(cA,cD,'wname') X=idwt(cA,cD,Lo_R,Hi_R) X=idwt(cA,cD,'wname',L)函数 fft、fft2 和 fftn 分 X=idwt(cA,cD,Lo_R,Hi_R,L) 说明:X=idwt(cA,cD,'wname') 由近似分量 cA 和细节分量 cD 经 小波反变换重构原始信号 X 。 'wname' 为所选的小波函数 X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。 X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。 2 二维小波变换的 Matlab 实现 二维小波变换的函数别可以实现一维、二维和 N 维 DFT 函数名函数功能

--------------------------------------------------- dwt2 二维离散小波变换 wavedec2 二维信号的多层小波分解 idwt2 二维离散小波反变换 waverec2 二维信号的多层小波重构 wrcoef2 由多层小波分解重构某一层的分解信号 upcoef2 由多层小波分解重构近似分量或细节分量 detcoef2 提取二维信号小波分解的细节分量 appcoef2 提取二维信号小波分解的近似分量 upwlev2 二维小波分解的单层重构 dwtpet2 二维周期小波变换 idwtper2 二维周期小波反变换 ----------------------------------------------------------- (1) wcodemat 函数 功能:对数据矩阵进行伪彩色编码函数 fft、fft2 和 fftn 分 格式:Y=wcodemat(X,NB,OPT,ABSOL) Y=wcodemat(X,NB,OPT) Y=wcodemat(X,NB) Y=wcodemat(X) 说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵 Y ;NB 伪编码的最大值,即编码范围为 0~NB,缺省值 NB=16; OPT 指定了编码的方式(缺省值为 'mat'),即:别可以实现 一维、二维和 N 维 DFT OPT='row' ,按行编码 OPT='col' ,按列编码

matlab数值计算(命令与示例)

MATLAB数值计算 MATLAB数值计算 (1) 1创建矩阵 (3) 1.1直接输入 (3) 1.2向量 (3) 1.2.1linspace:线性分布 (3) 1.2.2冒号法 (3) 1.3函数创建 (4) 1.3.1eye:单位矩阵 (4) 1.3.2rand:随机矩阵 (4)

1.3.3zeros:全0矩阵 (4) 1.3.4ones:全1矩阵 (5) 2矩阵运算 (5) 2.1加减 (5) 2.1.1[M×N]±[M×N] (5) 2.2乘 (6) 2.2.1[M×N]*a (6) 2.2.2[M×N]*[N×M] (6) 2.3乘方 (7) 2.3.1[M×M]^a (7) 2.3.2a^[M×M] (7) 2.4特殊运算 (8) 2.4.1求逆inv (8) 2.4.2行列式det (8) 2.4.3特征值eig (8) 2.4.4转置'和.' (9) 2.4.5变形reshape (10) 2.4.6翻转rot90,fliplr,flipud (11) 2.4.7抽取diag,tril,triu (12) 2.5数组运算 (12) 2.5.1乘 (12) [M×N].*[M×N] (12) 2.5.2除 (13) [M×N]./[M×N] (14) [M×N].\[M×N] (14) 2.5.3乘方 (14) [M×N].^[M×N] (15) a.^[M×N] (15) 2.6除法 (15) 2.6.1求解线性方程组 (15) 3多项式 (16) 3.1系数表示法poly (16) 3.2求根roots (16) 3.3乘法conv (16) 3.4除法deconv (17) 3.5求值polyval (17) 3.6微分polyder (18)

《MATLAB与数值分析》第一次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析 学生姓名:李培睿 学号:2013020904026 指导教师:程建

一、实验名称 《MATLAB与数值分析》第一次上机实验 二、实验目的 1. 熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算 操作。(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序) 2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号 转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。(用.m文件编写进行符号因式分解和函数求反的程序) 3. 掌握Matlab函数的编写规范。 4、掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、 三维曲线和面的填充、三维等高线等。(用.m文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释) 5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。 三、实验内容 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x, y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 2. 编程实现奥运5环图,允许用户输入环的直径。 3. 实现对输入任意长度向量元素的冒泡排序的升序排列。不允许使用sort 函数。 四、实验数据及结果分析 题目一: ①在Editor窗口编写函数代码如下:

Matlab作业3(数值分析)答案

Matlab作业3(数值分析) 机电工程学院(院、系)专业班组 学号姓名实验日期教师评定 1.计算多项式乘法(x2+2x+2)(x2+5x+4)。 答: 2. (1)将(x-6)(x-3)(x-8)展开为系数多项式的形式。(2)求解在x=8时多项 式(x-1)(x-2) (x-3)(x-4)的值。 答:(1) (2)

3. y=sin(x),x从0到2π,?x=0.02π,求y的最大值、最小值、均值和标准差。 4.设x=[0.00.30.8 1.1 1.6 2.3]',y=[0.500.82 1.14 1.25 1.35 1.40]',试求二次多项式拟合系数,并据此计算x1=[0.9 1.2]时对应的y1。解:x=[0.0 0.3 0.8 1.1 1.6 2.3]'; %输入变量数据x y=[0.50 0.82 1.14 1.25 1.35 1.40]'; %输入变量数据y p=polyfit(x,y,2) %对x,y用二次多项式拟合,得到系数p x1=[0.9 1.2]; %输入点x1 y1=polyval(p,x1) %估计x1处对应的y1 p = -0.2387 0.9191 0.5318 y1 = a) 1.2909

5.实验数据处理:已知某压力传感器的测试数据如下表 p为压力值,u为电压值,试用多项式 d cp bp ap p u+ + + =2 3 ) ( 来拟 合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。解: >> p=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9]; u=[10,11,13,14,17,18,22,24,29,34,39]; x=polyfit(p,u,3) %得多项式系数 t=linspace(0,10,100); y=polyval(x,t); %求多项式得值 plot(p,u,'*',t,y,'r') %画拟和曲线 x = 0.0195 -0.0412 1.4469 9.8267

数值分析的matlab实现

第2章牛顿插值法实现 参考文献:[1]岑宝俊. 牛顿插值法在凸轮曲线修正设计中的应用[J]. 机械工程师,2009,10:54-55. 求牛顿插值多项式和差商的MA TLAB 主程序: function[A,C,L,wcgs,Cw]=newpoly(X,Y) n=length(X);A=zeros(n,n);A(:,1) =Y'; s=0.0;p=1.0;q=1.0;c1=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1)); end b=poly(X(j-1));q1=conv(q,b);c1=c1*j;q=q1; end C=A(n,n);b=poly(X(n));q1=conv(q1,b); for k=(n-1):-1:1 C=conv(C,poly(X(k)));d=length(C);C(d)=C(d)+A(k,k); end L(k,:)=poly2sym(C);Q=poly2sym(q1); syms M wcgs=M*Q/c1;Cw=q1/c1; (1)保存名为newpoly.m 的M 文件 (2)输入MA TLAB 程序 >> X=[242,243,249,250]; >> Y=[13.681,13.526,13.098,13.095]; >> [A,C,L,wcgs,Cw]=newpoly(X,Y) 输出3阶牛顿插值多项式L 及其系数向量C 差商的矩阵A ,插值余项wcgs 及其 ) ()()1(ξ+n n f x R 的系数向量Cw 。 A = 13.6810 0 0 0 13.5260 -0.1550 0 0 13.0980 -0.0713 0.0120 0 13.0950 -0.0030 0.0098 -0.0003 C = 1.0e+003 *

用matlab小波分析的实例

1 绪论 1.1概述 小波分析是近15年来发展起来的一种新的时频分析方法。其典型应用包括齿轮变速控制,起重机的非正常噪声,自动目标所顶,物理中的间断现象等。而频域分析的着眼点在于区分突发信号和稳定信号以及定量分析其能量,典型应用包括细胞膜的识别,金属表面的探伤,金融学中快变量的检测,INTERNET的流量控制等。 从以上的信号分析的典型应用可以看出,时频分析应用非常广泛,涵盖了物理学,工程技术,生物科学,经济学等众多领域,而且在很多情况下单单分析其时域或频域的性质是不够的,比如在电力监测系统中,即要监控稳定信号的成分,又要准确定位故障信号。这就需要引入新的时频分析方法,小波分析正是由于这类需求发展起来的。 在传统的傅立叶分析中,信号完全是在频域展开的,不包含任何时频的信息,这对于某些应用来说是很恰当的,因为信号的频率的信息对其是非常重要的。但其丢弃的时域信息可能对某些应用同样非常重要,所以人们对傅立叶分析进行了推广,提出了很多能表征时域和频域信息的信号分析方法,如短时傅立叶变换,Gabor变换,时频分析,小波变换等。其中短时傅立叶变换是在傅立叶分析基础上引入时域信息的最初尝试,其基本假定在于在一定的时间窗内信号是平稳的,那么通过分割时间窗,在每个时间窗内把信号展开到频域就可以获得局部的频域信息,但是它的时域区分度只能依赖于大小不变的时间窗,对某些瞬态信号来说还是粒度太大。换言之,短时傅立叶分析只能在一个分辨率上进行。所以对很多应用来说不够精确,存在很大的缺陷。 而小波分析则克服了短时傅立叶变换在单分辨率上的缺陷,具有多分辨率分析的特点,在时域和频域都有表征信号局部信息的能力,时间窗和频率窗都可以根据信号的具体形态动态调整,在一般情况下,在低频部分(信号较平稳)可以采用较低的时间分辨率,而提高频率的分辨率,在高频情况下(频率变化不大)可以用较低的频率分辨率来换取精确的时间定位。因为这些特定,小波分析可以探测正常信号中的瞬态,并展示其频率成分,被称为数学显微镜,广泛应用于各个时频分析领域。 全文介绍了小波变换的基本理论,并介绍了一些常用的小波函数,它们的主要性质包括紧支集长度、滤波器长度、对称性、消失矩等,都做了简要的说明。在不同的应用场合,各个小波函数各有利弊。 小波分析在图像处理中有非常重要的应用,包括图像压缩,图像去噪,图像融合,图像分解,图像增强等。文中给出了详细的程序范例,用MATLAB实现了基于小波变换的图像处理。

第06章_MATLAB数值计算_例题源程序汇总

第6章 MATLAB 数值计算 例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。 1356 78256323578255631 01-???? -? ?=???? -??A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素 max(max(A)) %求整个矩阵的最大元素。也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。也可使用命令:min(A(:)) 例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。 A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2) prod(S) %求A 的全部元素的乘积。也可以使用命令prod(A(:)) 例6.3 求向量X =(1!,2!,3!,…,10!)。 X=cumprod(1:10) 例6.4 对二维矩阵x ,从不同维方向求出其标准方差。 x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2) 例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。 X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)

例6.6 对下列矩阵做各种排序。 185412613713-?? ??=?? ??-?? A A=[1,-8,5;4,12,6;13,7,-13]; sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序 [X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I 例6.7 给出概率积分 2 (d x x f x x -? e 的数据表如表6.1所示,用不同的插值方法计算f (0.472)。 x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format long interp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short 例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。 T=0:5:65; X=2:5:57;

数值分析的MATLAB程序

列主元法 function lianzhuyuan(A,b) n=input('请输入n:') %选择阶数A=zeros(n,n); %系数矩阵A b=zeros(n,1); %矩阵b X=zeros(n,1); %解X for i=1:n for j=1:n A(i,j)=(1/(i+j-1)); %生成hilbert矩阵A end b(i,1)=sum(A(i,:)); %生成矩阵b end for i=1:n-1 j=i; top=max(abs(A(i:n,j))); %列主元 k=j; while abs(A(k,j))~=top %列主元所在行 k=k+1; end for z=1:n %交换主元所在行a1=A(i,z); A(i,z)=A(k,z); A(k,z)=a1; end a2=b(i,1); b(i,1)=b(k,1); b(k,1)=a2; for s=i+1:n %消去算法开始m=A(s,j)/A(i,j); %化简为上三角矩阵 A(s,j)=0; for p=i+1:n A(s,p)=A(s,p)-m*A(i,p); end b(s,1)=b(s,1)-m*b(i,1); end end X(n,1)=b(n,1)/A(n,n); %回代开始 for i=n-1:-1:1 s=0; %初始化s for j=i+1:n s=s+A(i,j)*X(j,1);

end X(i,1)=(b(i,1)-s)/A(i,i); end X 欧拉法 clc clear % 欧拉法 p=10; %贝塔的取值 T=10; %t取值的上限 y1=1; %y1的初值 r1=1; %y2的初值 %输入步长h的值 h=input('欧拉法please input number(h=1 0.5 0.25 0.125 0.0625):h=') ; if h>1 or h<0 break end S1=0:T/h; S2=0:T/h; S3=0:T/h; S4=0:T/h; i=1; % 迭代过程 for t=0:h:T Y=(exp(-t)); R=(1/(p-1))*exp(-t)+((p-2)/(p-1))*exp(-p*t); y=y1+h*(-y1); y1=y; r=r1+h*(y1-p*r1); r1=r; S1(i)=Y; S2(i)=R; S3(i)=y; S4(i)=r; i=i+1; end t=[0:h:T]; % 红线为解析解,'x'为数值解 plot(t,S1,'r',t,S3,'x')

matlab实现数值分析插值及积分

Matlab实现数值分析插值及积分 摘要: 数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。在实际生产实践中,常常将实际问题转化为数学模型来解决,这个过程就是数学建模。学习数值分析这门课程可以让我们学到很多的数学建模方法。 分别运用matlab数学软件编程来解决插值问题和数值积分问题。题目中的要计算差值和积分,对于问题一,可以分别利用朗格朗日插值公式,牛顿插值公式,埃特金逐次线性插值公式来进行编程求解,具体matlab代码见正文。编程求解出来的结果为:=+。 其中Aitken插值计算的结果图如下: 对于问题二,可以分别利用复化梯形公式,复化的辛卜生公式,复化的柯特斯公式编写程序来进行求解,具体matlab代码见正文。编程求解出来的结果为: 0.6932 其中复化梯形公式计算的结果图如下:

问题重述 问题一:已知列表函数 表格 1 分别用拉格朗日,牛顿,埃特金插值方法计算。 问题二:用复化的梯形公式,复化的辛卜生公式,复化的柯特斯公式计算积分,使精度小于5。 问题解决 问题一:插值方法 对于问题一,用三种差值方法:拉格朗日,牛顿,埃特金差值方法来解决。 一、拉格朗日插值法: 拉格朗日插值多项式如下: 首先构造1+n 个插值节点n x x x ,,,10 上的n 插值基函数,对任一点i x 所对应的插值基函数 )(x l i ,由于在所有),,1,1,,1,0(n i i j x j +-=取零值,因此)(x l i 有因子 )())(()(110n i i x x x x x x x x ----+- 。又因)(x l i 是一个次数不超过n 的多项式,所以只 可能相差一个常数因子,固)(x l i 可表示成: )())(()()(110n i i i x x x x x x x x A x l ----=+- 利用1)(=i i x l 得:

MATLAB小波变换指令及其功能介绍(超级有用).

MATLAB 小波变换指令及其功能介绍 1 一维小波变换的 Matlab 实现 (1 dwt函数 功能:一维离散小波变换 格式:[cA,cD]=dwt(X,'wname' [cA,cD]=dwt(X,Lo_D,Hi_D别可以实现一维、二维和 N 维 DFT 说明:[cA,cD]=dwt(X,'wname' 使用指定的小波基函数 'wname' 对信号X 进行分解,cA 、cD 分别为近似分量和细节分量; [cA,cD]=dwt(X,Lo_D,Hi_D 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。 (2 idwt 函数 功能:一维离散小波反变换 格式:X=idwt(cA,cD,'wname' X=idwt(cA,cD,Lo_R,Hi_R X=idwt(cA,cD,'wname',L函数 fft、fft2 和 fftn 分 X=idwt(cA,cD,Lo_R,Hi_R,L 说明:X=idwt(cA,cD,'wname' 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。 'wname' 为所选的小波函数 X=idwt(cA,cD,Lo_R,Hi_R 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。

X=idwt(cA,cD,'wname',L 和 X=idwt(cA,cD,Lo_R,Hi_R,L 指定返回信号 X 中心附近的 L 个点。 2 二维小波变换的 Matlab 实现 二维小波变换的函数别可以实现一维、二维和 N 维 DFT 函数名函数功能 --------------------------------------------------- dwt2 二维离散小波变换 wavedec2 二维信号的多层小波分解 idwt2 二维离散小波反变换 waverec2 二维信号的多层小波重构 wrcoef2 由多层小波分解重构某一层的分解信号 upcoef2 由多层小波分解重构近似分量或细节分量 detcoef2 提取二维信号小波分解的细节分量 appcoef2 提取二维信号小波分解的近似分量 upwlev2 二维小波分解的单层重构 dwtpet2 二维周期小波变换 idwtper2 二维周期小波反变换 ----------------------------------------------------------- (1 wcodemat 函数 功能:对数据矩阵进行伪彩色编码函数 fft、fft2 和 fftn 分格式: Y=wcodemat(X,NB,OPT,ABSOL Y=wcodemat(X,NB,OPT Y=wcodemat(X,NB

同济大学数值分析matlab编程题汇编

MATLAB 编程题库 1.下面的数据表近似地满足函数2 1cx b ax y ++=,请适当变换成为线性最小二乘问题,编程求最好的系数c b a ,,,并在同一个图上画出所有数据和函数图像. 625 .0718.0801.0823.0802.0687.0606.0356.0995 .0628.0544.0008.0213.0362.0586.0931.0i i y x ---- 解: x=[-0.931 -0.586 -0.362 -0.213 0.008 0.544 0.628 0.995]'; y=[0.356 0.606 0.687 0.802 0.823 0.801 0.718 0.625]'; A=[x ones(8,1) -x.^2.*y]; z=A\y; a=z(1); b=z(2); c=z(3); xh=-1:0.1:1; yh=(a.*xh+b)./(1+c.*xh.^2); plot(x,y,'r+',xh,yh,'b*')

2.若在Matlab工作目录下已经有如下两个函数文件,写一个割线法程序,求出这两个函数 10 的近似根,并写出调用方式: 精度为10 解: >> edit gexianfa.m function [x iter]=gexianfa(f,x0,x1,tol) iter=0; while(norm(x1-x0)>tol) iter=iter+1; x=x1-feval(f,x1).*(x1-x0)./(feval(f,x1)-feval(f,x0)); x0=x1;x1=x; end >> edit f.m function v=f(x) v=x.*log(x)-1; >> edit g.m function z=g(y) z=y.^5+y-1; >> [x1 iter1]=gexianfa('f',1,3,1e-10) x1 = 1.7632 iter1 = 6 >> [x2 iter2]=gexianfa('g',0,1,1e-10) x2 = 0.7549 iter2 = 8

matlab数值分析例题

1、 在MATLAB 中用Jacobi 迭代法讨论线性方程组, 1231231234748212515 x x x x x x x x x -+=?? -+=-??-++=? (1)给出Jacobi 迭代法的迭代方程,并判定Jacobi 迭代法求解此方程组是否收敛。 (2)若收敛,编程求解该线性方程组。 解(1):A=[4 -1 1;4 -8 1;-2 1 5] %线性方程组系数矩阵 A = 4 -1 1 4 -8 1 -2 1 5 >> D=diag(diag(A)) D = 4 0 0 0 -8 0 0 0 5 >> L=-tril(A,-1) % A 的下三角矩阵 L = 0 0 0 -4 0 0 2 -1 0 >> U=-triu(A,1) % A 的上三角矩阵 U = 0 1 -1 0 0 -1 0 0 0 B=inv(D)*(L+U) % B 为雅可比迭代矩阵 B = 0 0.2500 -0.2500 0.5000 0 0.1250 0.4000 -0.2000 0 >> r=eigs(B,1) %B 的谱半径

r = 0.3347 < 1 Jacobi迭代法收敛。 (2)在matlab上编写程序如下: A=[4 -1 1;4 -8 1;-2 1 5]; >> b=[7 -21 15]'; >> x0=[0 0 0]'; >> [x,k]=jacobi(A,b,x0,1e-7) x = 2.0000 4.0000 3.0000 k = 17 附jacobi迭代法的matlab程序如下: function [x,k]=jacobi(A,b,x0,eps) % 采用Jacobi迭代法求Ax=b的解 % A为系数矩阵 % b为常数向量 % x0为迭代初始向量 % eps为解的精度控制 max1= 300; %默认最多迭代300,超过300次给出警告D=diag(diag(A)); %求A的对角矩阵 L=-tril(A,-1); %求A的下三角阵 U=-triu(A,1); %求A的上三角阵 B=D\(L+U); f=D\b; x=B*x0+f; k=1; %迭代次数 while norm(x-x0)>=eps x0=x; x=B*x0+f; k=k+1; if(k>=max1) disp('迭代超过300次,方程组可能不收敛'); return; end end

数值分析matlab代码

1、%用牛顿法求f(x)=x-sin x 的零点,e=10^(-6) disp('牛顿法'); i=1; n0=180; p0=pi/3; tol=10^(-6); for i=1:n0 p=p0-(p0-sin(p0))/(1-cos(p0)); if abs(p-p0)<=10^(-6) disp('用牛顿法求得方程的根为') disp(p); disp('迭代次数为:') disp(i) break; end p0=p; end if i==n0&&~(abs(p-p0)<=10^(-6)) disp(n0) disp('次牛顿迭代后无法求出方程的解') end 2、disp('Steffensen加速'); p0=pi/3; for i=1:n0 p1=0.5*p0+0.5*cos(p0); p2=0.5*p1+0.5*cos(p1); p=p0-((p1-p0).^2)./(p2-2.*p1+p0); if abs(p-p0)<=10^(-6) disp('用Steffensen加速求得方程的根为') disp(p); disp('迭代次数为:') disp(i) break; end p0=p; end if i==n0&&~(abs(p-p0)<=10^(-6)) disp(n0) disp('次Steffensen加速后无法求出方程的解') end 1、%使用二分法找到方程 600 x^4 -550 x^3 +200 x^2 -20 x -1 =0 在区间[0.1,1]上的根, %误差限为 e=10^-4 disp('二分法')

a=0.2;b=0.26; tol=0.0001; n0=10; fa=600*(a.^4)-550*(a.^3)+200*(a.^2)-20*a-1; for i=1:n0 p=(a+b)/2; fp=600*(p.^4)-550*(p.^3)+200*(p.^2)-20*p-1; if fp==0||(abs((b-a)/2)0 a=p; else b=p; end end if i==n0&&~(fp==0||(abs((b-a)/2)

第3章 MATLAB数值计算-习题 答案

roots([1 -1 -1]) x=linspace(0,2*pi,10); y=sin(x); xi=linspace(0,2*pi,100); y1=interp1(x,y,xi); y2=interp1(x,y,xi,'spline'); y3=interp1(x,y,xi,'cublic'); plot(x,y,'o',xi,y1,xi,y2,xi,y3) x=[0 300 600 1000 1500 2000]; y=[0.9689 0.9322 0.8969 0.8519 0.7989 0.7491]; xi=linspace(0,2000,20); yi=1.0332*exp(-(xi+500)/7756); y1=interp1(x,y,xi,'spline'); subplot(2,1,1);plot(x,y,'o',xi,yi,xi,y1,'*') p=polyfit(x,y,2); y2=polyval(p,xi); subplot(2,1,2);plot(x,y,'o',xi,yi,xi,y2,'*') x=[0 300 600 1000 1500 2000]; y=[0.9689 0.9322 0.8969 0.8519 0.7989 0.7491]; xi=linspace(0,2000,20); y1=interp1(x,y,xi,'spline'); subplot(2,1,1);plot(x,y,'-o', xi,y1,'-*') p=polyfit(x,y,2); y2=polyval(p,xi); subplot(2,1,2);plot(x,y,'-o',xi,y2,'-*')

第2讲 matlab的数值分析

第二讲MATLAB的数值分析 2-1矩阵运算与数组运算 矩阵运算和数组运算是MATLAB数值运算的两大类型,矩阵运算是按矩阵的运算规则进行的,而数组运算则是按数组元素逐一进行的。因此,在进行某些运算(如乘、除)时,矩阵运算和数组运算有着较大的差别。在MATLAB中,可以对矩阵进行数组运算,这时是把矩阵视为数组,运算按数组的运算规则。也可以对数组进行矩阵运算,这时是把数组视为矩阵,运算按矩阵的运算规则进行。 1、矩阵加减与数组加减 矩阵加减与数组加减运算效果一致,运算符也相同,可分为两种情况: (1)若参与运算的两矩阵(数组)的维数相同,则加减运算的结果是将两矩阵的对应元素进行加减,如 A=[1 1 1;2 2 2;3 3 3]; B=A; A+B ans= 2 2 2 4 4 4 6 6 6 (2)若参与运算的两矩阵之一为标量(1*1的矩阵),则加减运算的结果是将矩阵(数组)的每一元素与该标量逐一相加减,如 A=[1 1 1;2 2 2;3 3 3]; A+2 ans= 3 3 3 4 4 4 5 5 5 2、矩阵乘与数组乘 (1)矩阵乘 矩阵乘与数组乘有着较大差别,运算结果也完全不同。矩阵乘的运算符为“*”,运算是按矩阵的乘法规则进行,即参与乘运算的两矩阵的内维必须相同。设A、B为参与乘运算的 =A m×k B k×n。因此,参与运两矩阵,C为A和B的矩阵乘的结果,则它们必须满足关系C m ×n 算的两矩阵的顺序不能任意调换,因为A*B和B*A计算结果很可能是完全不一样的。如:A=[1 1 1;2 2 2;3 3 3]; B=A;

A*B ans= 6 6 6 12 12 12 18 18 18 F=ones(1,3); G=ones(3,1); F*G ans 3 G*F ans= 1 1 1 1 1 1 1 1 1 (2)数组乘 数组乘的运算符为“.*”,运算符中的点号不能遗漏,也不能随意加空格符。参加数组乘运算的两数组的大小必须相等(即同维数组)。数组乘的结果是将两同维数组(矩阵)的对应元素逐一相乘,因此,A.*B和B.*A的计算结果是完全相同的,如: A=[1 1 1 1 1;2 2 2 2 2;3 3 3 3 3]; B=A; A.*B ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 B.*A ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 由于矩阵运算和数组运算的差异,能进行数组乘运算的两矩阵,不一定能进行矩阵乘运算。如 A=ones(1,3); B=A; A.*B ans= 1 1 1 A*A ???Error using= =>

关于小波分析的matlab程序

https://www.wendangku.net/doc/475508141.html,/forum-viewthread-tid-9141-extra-page%3D1-page-1.html(个人收集关于小波分析的matlab程序) 小波滤波器构造和消噪程序 (1) 小波谱分析mallat算法经典程序 (7) 小波包变换分析信号的MATLAB程序 (9) 利用小波变换实现对电能质量检测的算法实现 (15) 基于小波变换的图象去噪Normalshrink算法 (17) 小波滤波器构造和消噪程序 1.重构 % mallet_wavelet.m % 此函数用于研究Mallet算法及滤波器设计 % 此函数仅用于消噪 a=pi/8; %角度赋初值 b=pi/8; %低通重构FIR滤波器h0(n)冲激响应赋值 h0=cos(a)*cos(b); h1=sin(a)*cos(b); h2=-sin(a)*sin(b); h3=cos(a)*sin(b); low_construct=[h0,h1,h2,h3]; L_fre=4; %滤波器长度 low_decompose=low_construct(end:-1:1); %确定h0(-n),低通分解滤波器 for i_high=1:L_fre; %确定h1(n)=(-1)^n,高通重建滤波器 if(mod(i_high,2)==0); coefficient=-1;

else coefficient=1; end high_construct(1,i_high)=low_decompose(1,i_high)*coefficient; end high_decompose=high_construct(end:-1:1); %高通分解滤波器h1(-n) L_signal=100; %信号长度 n=1:L_signal; %信号赋值 f=10; t=0.001; y=10*cos(2*pi*50*n*t).*exp(-20*n*t); figure(1); plot(y); title('原信号'); check1=sum(high_decompose); %h0(n)性质校验 check2=sum(low_decompose); check3=norm(high_decompose); check4=norm(low_decompose); l_fre=conv(y,low_decompose); %卷积 l_fre_down=dyaddown(l_fre); %抽取,得低频细节 h_fre=conv(y,high_decompose); h_fre_down=dyaddown(h_fre); %信号高频细节

相关文档
相关文档 最新文档