clc;
close all;
clear;
fs = 100000;
t = 1: 100;
x = sin(2*pi*4000* t/fs) + sin(2*pi*40000*t/fs);

%db8
[Lo_D1, Hi_D1] = wfilters('db1', 'd');%从db1到db8. 滤波器系数个数不同 2
[Lo_D2, Hi_D2] = wfilters('db2', 'd');%从db1到db8. 4
[Lo_D3, Hi_D3] = wfilters('db4', 'd');%从db1到db8. 8
[Lo_D4, Hi_D4] = wfilters('db8', 'd');%从db1到db8. 16
freqz(Lo_D1);
hold on;
freqz(Lo_D2);
hold on;
freqz(Lo_D3);
hold on;
freqz(Lo_D4);%等级越高,衰减越厉害,过渡带越窄
close all;

%cwt连续小波变换,dwt离散小波变换
%dwt仅仅对单一尺度的变化
[cA1, cD1 ]= dwt(x, 'db1');%cA1低频分量 信号的近似, cD1高频分量 信号的细节

%A1=upcoef('a',cA1,'db1');%单尺度低频系数向上一步的重构信号
%D1=upcoef('a',cA2,'db1');%高频系数 ...

X = idwt(cA1, cD1, 'db1');%
figure(10);
subplot(3, 1,1)
plot(x);
title('原始');
subplot(3, 1,2)
plot(X);
title('重构');
subplot(3, 1,3)
plot(x-X);
title('误差');

%wavedec多尺度分解 仅仅对低频分量分解
%[C,L] = WAVEDEC(X,N,Lo_D,Hi_D) 已有的滤波器系数
%wavedec 由多次调用 dwt ,将输出的低频分量,再次传入,如此
[C, L]= wavedec(x, 2, 'db1');% L对应于每个节点的样本点数; 从最底层到顶层

%多尺度重构, a3 = wrcoef('a'或者'd',C,L,'db1');%'a'表示低频近似系数,'d'高频细节系数
cA1 = appcoef(C, L, 'db1', 1);%approximation coefficients
cA2 = appcoef(C, L, 'db1', 2);

%多尺度 低高频重构 X = waverec(C,L,'db1');

figure(1);%仅仅对低频分量逐步分解,精细化
subplot(3,1,1)
plot(x);
subplot(3,1,2)
plot(cA1);
title('尺度1的低频系数');
subplot(3,1,3)
plot(cA2);
title('尺度2的低频系数');

cD1 = detcoef(C, L, 1);%extracts the detail coefficients
cD2 = detcoef(C, L, 2);

figure(2)
subplot(3,1,1)
plot(x);
subplot(3,1,2)
plot(cD1);
title('尺度1的高频系数');
subplot(3,1,3)
plot(cD2);
title('尺度2的高频系数');

%小波包分解是对小波分解的推广,它提供了位置、尺度和频率
%它克服了小波分解在高频段的频率分辨率差,在低频段的时间分辨率差的问题。
%每一层的节点 左孩子节点 传入父数据,低通滤波器滤波,下采样,存数据 右孩子节点 传入父数据, 高通滤波器滤波,下采样,存数据
%不断的下采样,频谱相对变大,频域分辨率提升。
%所有的左孩子和右孩子对应的高低通滤波器系数分别一致
wpt = wpdec(x, 2, 'db1');
%小波包重构 rex = wprec(wpt)
plot(wpt);
figure(4)
subplot(2,1,1);
plot(x);
cfs = wpcoef(wpt, [2 0]);
subplot(2,1,2);
plot(cfs);
title('结点(2,0)系数')

figure;
rcfs = wprcoef(wpt, [2 0]);
plot(rcfs);
title('重构小波节点(2,0)');

% %wavlet
% High_coe = [ -5.44158422430816093862e-02,
% 3.12871590914465924627e-01,
% -6.75630736298012846142e-01,
% 5.85354683654869090148e-01,
% 1.58291052560238926228e-02,
% -2.84015542962428091389e-01,
% -4.72484573997972536787e-04,
% 1.28747426620186011803e-01,
% 1.73693010020221083600e-02,
% -4.40882539310647192377e-02,
% -1.39810279170155156436e-02,
% 8.74609404701565465445e-03,
% 4.87035299301066034600e-03,
% -3.91740372995977108837e-04,
% -6.75449405998556772109e-04,
% -1.17476784002281916305e-04];
%
% Low_coe = [ -1.17476784002281916305e-04,
% 6.75449405998556772109e-04,
% -3.91740372995977108837e-04,
% -4.87035299301066034600e-03,
% 8.74609404701565465445e-03,
% 1.39810279170155156436e-02,
% -4.40882539310647192377e-02,
% -1.73693010020221083600e-02,
% 1.28747426620186011803e-01,
% 4.72484573997972536787e-04,
% -2.84015542962428091389e-01,
% -1.58291052560238926228e-02,
% 5.85354683654869090148e-01,
% 6.75630736298012846142e-01,
% 3.12871590914465924627e-01,
% 5.44158422430816093862e-02];
%
% %滤波器系数与采样率 无关。
% %显示归一化频率对应
%
% freqz(High_coe);
% hold on;
% freqz(Low_coe);

小波包分解 仿真 matlab的更多相关文章

  1. 【转】小波与小波包、小波包分解与信号重构、小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)

    转:https://blog.csdn.net/cqfdcw/article/details/84995904 小波与小波包.小波包分解与信号重构.小波包能量特征提取   (Matlab 程序详解) ...

  2. MATLAB小波包的分解与重构

    该文章用来直观上先感受一下小波包的分解与重构   例1 有一个信号,变量名为wave,随便找一个信号load进来就行了. t=wpdec(wave,3,'dmey'); t2 = wpjoin(t,[ ...

  3. 小波分解和合成的simulink仿真

    采用5-3提升小波的方法 小波分解 数据拆分 预测 更新 数据输出使能电路 电路共有两个输入三个输出,in1是数据输入,in2是输入数据有效信号,out1是更新后的低频信号,out2是预测的高频信号, ...

  4. 二维离散平稳小波分解swt2

    对信号X进行N尺度平稳小波分解 [A,H,V,D]=swt2(X,N,'wname'); clc,clear all,close all; load woman; [cA,cH,cV,cD]=swt2 ...

  5. 多尺度二维离散小波分解wavedec2

    对X进行N尺度小波分解 [C,S]=wavedec2(X,N,'wname'); clc,clear all,close all; load woman; [c,s]=wavedec2(X,2,'db ...

  6. 单尺度二维离散小波分解dwt2

    clc,clear all,close all; load woman; [cA,cH,cV,cD]=dwt2(X,'haar');%单尺度二维离散小波分解.分解小波函数haar figure,ims ...

  7. 一阶RC高通滤波器详解(仿真+matlab+C语言实现)

    文章目录 预备知识 关于电容 HPF的推导 simulink 仿真 simulink 运行结果 matlab 实现 matlab 运行结果 C语言实现 如果本文帮到了你,帮忙点个赞: 如果本文帮到了你 ...

  8. 一阶RC低通滤波器详解(仿真+matlab+C语言实现)

    文章目录 1 预备知识 2 simulink 仿真 3 simulink 运行结果 4 matlab实现 5 matlab运行结果 6 C语言实现 7 C语言运行结果 如果本文帮到了你,帮忙点个赞: ...

  9. 矩阵的五种分解的matlab实现

    由于这学期修了矩阵分析这门课,课程要求用matlab实现矩阵的5种分解,仅仅是实现了分解,上传到博客存档,万一哪天某位同学就需要了呢.. 1.矩阵的满秩分解 代码实现 %矩阵的满秩分解 clear % ...

随机推荐

  1. .NET Core中ADO.NET SqlClient的使用与常见问题

    一.简介 在很多要求性能的项目中,我们都要使用传统的ADO.NET的方式来完成我们日常的工作:目前有一些网友问有关于.NET Core操作SQL Server的问题在本文中解答一下. 本文旨在指出,在 ...

  2. ImportError: cannot import name '_imagingtk'

    问题描述 使用tkinter画pillow生成的图片时,在tkinter中抛出此异常. 解决方案 pip install -I --no-cache-dir Pillow 更新pillow 重启解决一 ...

  3. 【WPF】Combobox指定选中值用selectedValue不是很灵的时候,

    wpf combobox 指定选中的值,前题,combobox是通过数据库绑定的ItemsSource:所以再指定的时候用selectValue不是很成功!我的解决方法是 生成一个字典,办值和索引对应 ...

  4. WIN7下安装visualC++2008 redistributable 出现1935错误的解决办法(转自)

    转自:http://zhidao.baidu.com/link?url=jylNh_JeANi4wrOMmd4d2i06e_N3QCw7z6BLGiNNNTu1Hc6ADTkUq2PORExKmjtk ...

  5. sql server如何分组编号

    我们在生产实践中经常会有这样的需求:分组编号. 如下有一个城市区域表region: 我们需要对上表region按city分组,对region进行排序,得到如下结果: 具体sql如下: select c ...

  6. NodeJs入门学习(一)

    NodeJs是针对前端工程师向web后端深入理解的一门很好的语言. 首先,记录NodeJS几大特性,后续补充: 一.Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. ...

  7. bzoj2243

    2243: [SDOI2011]染色 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 6753  Solved: 2496[Submit][Status ...

  8. QPS 与 TPS 简介

    QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. TPS是Tra ...

  9. 封装一个函数获取匹配特定的css选择符

    function $$(selector,context){ context=context||document; var elements=context.querySelectorAll(sele ...

  10. TypeScript 素描 - 接口

    /* 接口 C#写多了,接口也自然也是理解的.不过TypeScript中的接口与 C#中的还是有些区别的 接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约 */ //为方法的参数做契约 i ...