多尺度小波分解与重构,matlab,对系数进行处理后,构造C,重构信号
2017-09-17 20:38
411 查看
自己要解决的问题是,用小波分解对时间序列进行多尺度分解,再分别对各系数进行预测,最后重构得到最后的预测结果。
因为对系数进行了新的处理,所以不能直接用waverec函数重构原始信号,而需要先构造C,再用waverec函数重构原始信号。
所以这里主要解决的问题是如何用新的系数构造C,进而用waverec函数重构原始信号。
如果有哪个地方理解错误,还望指正
%%首先是不对系数进行另外处理的直接重构原始信号
%小波分解与重构
gasload=importdata('load_new.xls');
loaddata=gasload.data.Sheet2;
a=loaddata(:,4);
a=a';
ls=length(a);
%多尺度一维分解
[C,L]=wavedec(a,3,'db1');
%提取系数
cA3=appcoef(C,L,'db1',3);
cD3=detcoef(C,L,3);
cD2=detcoef(C,L,2);
cD1=detcoef(C,L,1);
%重构系数
A3=wrcoef('a',C,L,'db1',3);
D1=wrcoef('d',C,L,'db1',1);
D2=wrcoef('d',C,L,'db1',2);
D3=wrcoef('d',C,L,'db1',3);
%重构原始信号
A0=waverec(C,L,'db1');
%重构最大误差
Err=max(abs(a-A0));
------------------------------------------以上是直接重构原始信号--------------------------
------------------------------------------以下是对系数进行处理后,构造C,再用waverec函数重构原始信号--------------------------
%%%省略对系数的处理过程
%%%。。。。。。。
%%%用新的系数构造C
这里之所以构造C,是因为waverec函数的参数C里存放的是原始的系数,而不是经过处理的新的系数;所以需要得到由新的系数构造的C。
现在需要了解C的构造方式,以便以正确的结构用新的参数构造C。在matlab里用help函数查看wavedec函数,可以看到关于C的结构介绍。从而反向来构造C。
help wavedec
已在matlab里通过size函数计算得到,
size (a) 为1*1000; size(C)为 1*1000; size(L)为1*5;L=[125,125,250,500,1000];
size(cA3)为1*125;size(cD3)为1*125;size(cD2)为1*250;size(cD1)为1*500;
则依据help的结果,C的组成结构为【cA3,cD3,cD2,cD1】;
L1为近似系数cA3的长度(125),L2为细节系数cD3的长度(125);L3为cD2的长度(250),L4为cD1的长度(500),L5为a的长度(1000)。
则用处理过的系数重构C就变得很简单;
C=[cA3,cD3,cD2,cD1]
再用waverec函数重构原始信号
A0=waverec(C,L,'db1');
%重构最大误差
Err=max(abs(a-A0));
因为对系数进行了新的处理,所以不能直接用waverec函数重构原始信号,而需要先构造C,再用waverec函数重构原始信号。
所以这里主要解决的问题是如何用新的系数构造C,进而用waverec函数重构原始信号。
如果有哪个地方理解错误,还望指正
%%首先是不对系数进行另外处理的直接重构原始信号
%小波分解与重构
gasload=importdata('load_new.xls');
loaddata=gasload.data.Sheet2;
a=loaddata(:,4);
a=a';
ls=length(a);
%多尺度一维分解
[C,L]=wavedec(a,3,'db1');
%提取系数
cA3=appcoef(C,L,'db1',3);
cD3=detcoef(C,L,3);
cD2=detcoef(C,L,2);
cD1=detcoef(C,L,1);
%重构系数
A3=wrcoef('a',C,L,'db1',3);
D1=wrcoef('d',C,L,'db1',1);
D2=wrcoef('d',C,L,'db1',2);
D3=wrcoef('d',C,L,'db1',3);
%重构原始信号
A0=waverec(C,L,'db1');
%重构最大误差
Err=max(abs(a-A0));
------------------------------------------以上是直接重构原始信号--------------------------
------------------------------------------以下是对系数进行处理后,构造C,再用waverec函数重构原始信号--------------------------
%%%省略对系数的处理过程
%%%。。。。。。。
%%%用新的系数构造C
这里之所以构造C,是因为waverec函数的参数C里存放的是原始的系数,而不是经过处理的新的系数;所以需要得到由新的系数构造的C。
现在需要了解C的构造方式,以便以正确的结构用新的参数构造C。在matlab里用help函数查看wavedec函数,可以看到关于C的结构介绍。从而反向来构造C。
help wavedec
已在matlab里通过size函数计算得到,
size (a) 为1*1000; size(C)为 1*1000; size(L)为1*5;L=[125,125,250,500,1000];
size(cA3)为1*125;size(cD3)为1*125;size(cD2)为1*250;size(cD1)为1*500;
则依据help的结果,C的组成结构为【cA3,cD3,cD2,cD1】;
L1为近似系数cA3的长度(125),L2为细节系数cD3的长度(125);L3为cD2的长度(250),L4为cD1的长度(500),L5为a的长度(1000)。
则用处理过的系数重构C就变得很简单;
C=[cA3,cD3,cD2,cD1]
再用waverec函数重构原始信号
A0=waverec(C,L,'db1');
%重构最大误差
Err=max(abs(a-A0));
相关文章推荐
- 多尺度小波分解得到的系数进行处理之后如何进行重构的问题说明
- 多尺度小波分解得到的系数进行处理后如何进行chogng
- 自己动手编写小波信号分解与重构的Matlab程序
- 一维小波多尺度分解及重构的MATLAB实现
- 自己动手编写小波信号分解与重构的Matlab程序
- [转帖] matlab小波分解与重构(转)续2
- 二维haar小波分解与重构的matlab实现
- 一个单尺度小波分解的程序-MATLAB版
- 一维信号的小波分解重构程序
- 基于matlab对ECG信号进行滤波处理
- MATLAB与VC++混合编程实现一维小波多尺度分解
- 【转载】MATLAB与VC++混合编程实现一维小波多尺度分解
- 图像小波包分解后如何改变分解系数再重构呢?
- Matlab时频分析工具箱小波尺度图函数的使用说明与实例
- Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构
- 使用可重入函数进行更安全的信号处理
- 数字信号处理实践——基于matlab的音频信号分析即处理
- 信号处理和模式识别方面的MATLAB工具箱
- MATLAB进行二值处理并提取像素值
- 小波图像分解与重构