这个模块的函数,主要提供一维离散数据,进行小波分解与重构使用.
本模块主要有如下功能:
1、可以将一维信号数据分成多层
2、可以指定每一层分解的小波分解与重构系数
3、可以对每一层分别指定降噪阈值
4、可以对每一层数据进行赋值/获取操作


下面简单演示如何使用本代码进行降噪

例子1:(一键函数)
//这里假设你的信号数据存储在oldData矩阵变量里面, 执行完下面的命令, 降噪重构后的信号存储在newData里
[oldData,c] = {Wavelet1D_RemoveTrend<矩阵运算\Wavelet1D_RemoveTrend>}(oldData);//如果有线性趋势,可以先尝试去除

newData = {Wavelet1D_DataCleaning<矩阵运算\Wavelet1D_DataCleaning>}(oldData, 9, "db6", 0.1);//使用9层db6小波进行降噪处理,噪音阈值设置为0.1

//如果执行了线性趋势去除,且想最终结果恢复线性趋势结果,继续执行如下代码
newData = {Wavelet1D_AddTrend<矩阵运算\Wavelet1D_AddTrend>}(newData, c);

例子2:(精细控制, 可以对每一层进行单独的小波参数设置, 以及获取)
//这里假设你的信号数据存储在oldData里面,执行完下面的命令,降噪重构后的信号存储在newData里
[oldData,c] ={Wavelet1D_RemoveTrend<矩阵运算\Wavelet1D_RemoveTrend>}(oldData);//如果有线性趋势,可以先尝试去除

nosie = 0.1;//这个可以看成一个降噪系数,此值不同,降噪功能有所区别,因此实际使用时,可以对此参数进行调参
s = DataMedian(oldData);
y = oldData - s;
wave = {Wavelet1D_Create<矩阵运算\Wavelet1D_Create>}(y,9);
[lowdec,highdec,lowre,highre]={WaveletFilter<矩阵运算\WaveletFilter>}("db6");
{Wavelet1D_SetLowRe<矩阵运算\Wavelet1D_SetLowRe>}(wave,lowre);
{Wavelet1D_SetLowDec<矩阵运算\Wavelet1D_SetLowDec>}(wave,lowdec);
{Wavelet1D_SetHighRe<矩阵运算\Wavelet1D_SetHighRe>}(wave,highre);
{Wavelet1D_SetHighDec<矩阵运算\Wavelet1D_SetHighDec>}(wave,highdec);
{Wavelet1D_Decomposition<矩阵运算\Wavelet1D_Decomposition>}(wave);//小波多层分解
{Wavelet1D_MulHighNoiseTh<矩阵运算\Wavelet1D_MulHighNoiseTh>}(wave, nosie);//设置高频降噪阈值
{Wavelet1D_MulLowNoiseTh<矩阵运算\Wavelet1D_MulLowNoiseTh>}(wave, nosie);//设置低频降噪阈值
{Wavelet1D_HighNoiseReduce<矩阵运算\Wavelet1D_HighNoiseReduce>}(wave);//对所有层的高频数据进行降噪
{Wavelet1D_LowNoiseReduce<矩阵运算\Wavelet1D_LowNoiseReduce>}(wave, 9);//仅对最后一层的低频数据进行降噪
{Wavelet1D_ReBuild<矩阵运算\Wavelet1D_ReBuild>}(wave);//小波重建
y1 = {Wavelet1D_GetLowData<矩阵运算\Wavelet1D_GetLowData>}(wave, 0);//获取重建后的数据
newData = y1 + s;//恢复重建数据到原始信号值附近,即newData 即为小波降噪后的结果

//如果执行了线性趋势去除,且想最终结果恢复线性趋势结果,继续执行如下代码
newData = {Wavelet1D_AddTrend<矩阵运算\Wavelet1D_AddTrend>}(newData, c);

