贵安室内有什么好玩的:一维离散小波MATLAB命令行的实现方法
来源:百度文库 编辑:偶看新闻 时间:2024/04/30 00:51:30
一维离散小波MATLAB命令行的实现方法
小波、小波包、MATLAB 2009-07-19 16:16:44 阅读245 评论5 字号:大中小 订阅
noisbloc信号是MATLAB自带的含高频噪声的信号。1.装载信号
在MATLAB命令行中输入
load noisbloc
s=noisbloc(1:1024);
ls=length(s);
plot(s);
2.完成信号的单尺度一维离散小波分解
采用db4基本小波分解信号
在命令窗口中输入
[cA1,cD1]=dwt(s,'db4');
这就产生了低频系数cA1和高频系数cD1。
可以通过whos命令查看cA1和cD1的长度:
whos
Name Size Bytes Class
cA1 1x515 4120 double array
cD1 1x515 4120 double array
ls 1x1 8 double array
noisbloc 1x1024 8192 double array
s 1x1024 8192 double array
Grand total is 3079 elements using 24632 bytes
3.从系数中重构低频部分和高频部分
从第二步产生的系数cA1和cD1构造第一层的低频和高频(A1和D1)系数;
A1=upcoef('a',cA1,'db4',1,ls);
D1=upcoef('a',cD1,'db4',1,ls);
或用下面两个函数:
A1=idwt(cA1,[],'db4',ls);
D1=idwt(cD1,[],'db4',ls);
4.显示高频和低频部分
为了显示第一层分解结果,输入
subplot(211); plot(A1); title('低频A1');
subplot(212); plot(D1); title('低频D1');
5.由小波逆变换恢复信号
使用idwt函数很容易实现,在命令窗口输入
subplot(211); plot(s); title('原始信号');
subplot(212); plot(A0); title('重构信号');
6.多层一维分解
为了完成一个5层的分解,输入:
[C,L]=wavedec(s,5,'db4');
7.提取系数的低频和高频部分
为了从上面的C中提取第3层的低频系数,输入:
cA3=appcoef(C,L,'db4',3);
8.重构第3层的低频系数
为了从上面的C中重构第3层的低频系数,输入:
A3=wrcoef('a',C,L,'db4',3);
9.重构第1、2、3、4、5层的高频信号
其方法是:
cA5=appcoef(C,L,'db4',5);
A5=wrcoef('a',C,L,'db4',5);
D1=wrcoef('d',C,L,'db4',1);
D2=wrcoef('d',C,L,'db4',2);
D3=wrcoef('d',C,L,'db4',3);
D4=wrcoef('d',C,L,'db4',4);
D5=wrcoef('d',C,L,'db4',5);
下面显示多尺度一维分解的结果:
subplot(322); plot(D1); title('低频D1');
subplot(323); plot(D2); title('低频D2');
subplot(323); plot(D3); title('低频D3');
subplot(325); plot(A5); title('低频D4');
subplot(326); plot(A5); title('低频D5');
10.重构原始信号并显示
A0=waverec(C,L,'db4');
subplot(311); plot(s); title('原始信号');
subplot(312); plot(A0); title('重构信号');
subplot(313); plot(s-A0); title('误差信号');
用M文件一次运行可得结果
clc
clear all
load noisbloc
s=noisbloc(1:1024);
ls=length(s);
figure
plot(s);
[cA1,cD1]=dwt(s,'db4');
whos
A1=upcoef('a',cA1,'db4',1,ls);
D1=upcoef('a',cD1,'db4',1,ls);
A1=idwt(cA1,[],'db4',ls);
D1=idwt(cD1,[],'db4',ls);
figure
subplot(211); plot(A1); title('低频A1');
subplot(212); plot(D1); title('低频D1');
[C,L]=wavedec(s,5,'db4');
cA3=appcoef(C,L,'db4',3);
A3=wrcoef('a',C,L,'db4',3);
cA5=appcoef(C,L,'db4',5);
A5=wrcoef('a',C,L,'db4',5);
D1=wrcoef('d',C,L,'db4',1);
D2=wrcoef('d',C,L,'db4',2);
D3=wrcoef('d',C,L,'db4',3);
D4=wrcoef('d',C,L,'db4',4);
D5=wrcoef('d',C,L,'db4',5);
figure
subplot(321); plot(A5); title('低频A5');
subplot(322); plot(D1); title('低频D1');
subplot(323); plot(D2); title('低频D2');
subplot(324); plot(D3); title('低频D3');
subplot(325); plot(A5); title('低频D4');
subplot(326); plot(A5); title('低频D5');
A0=waverec(C,L,'db4');
figure
subplot(311); plot(s); title('原始信号');
subplot(312); plot(A0); title('重构信号');
subplot(313); plot(s-A0); title('误差信号');
MATLAB中使用二维离散小波的好处
matlab或mathematica怎样实现对离散点的傅立叶变换和逆变换
离散小波转换
基于小波变换的电网谐波检测,怎么用MATLAB来实现?
小波域的维纳滤波用matlab怎样实现?
作出一个离散正弦信号的幅度谱图的matlab程序
matlab如何将系统离散化
将一个离散时间信号进行傅立叶变换,怎样用MATLAB求该傅立叶变换中包含的频率值?
将一个离散时间信号进行傅立叶变换,怎样用MATLAB求该傅立叶变换中包含的频率值?
小弟求教一题怎么 用matlab编程实现
离散数学的“离散”是什么意思?
如何使用matlab处理一维信号的噪声
matlab实现外推法
算术编码 MATLAB实现
如何用MATLAB实现???????
matlab实现三次样条插值?
小弟跪求Matlab小波工具箱!
两组序列的方差和协方差的matlab实现
如何编程命令行下运行的小程序
如何编程命令行下运行的小程序
MATLAB提供C#的接口么?怎么实现?
如何利用matlab实现心电图中背景网格的剔除
求matlab实现扩展卡尔曼滤波的程序
毕业设计做《数字信号处理的MATLAB》实现,请大家帮帮忙!