主要内容

小波Interval-Dependent去噪

这个例子展示了如何使用interval-dependent阈值降噪信号。

小波GUI工具提供一个准确的去噪过程允许我们微调降噪信号所需的参数。然后,我们可以节省去噪信号,小波分解和去噪参数。

它是乏味的,有时不可能治疗许多使用相同的去噪信号设置。批处理模式,使用命令行,可以更有效率。这个例子显示了如何在命令行工作简化并解决这个问题。

在这个例子中,我们执行六个试验电信号降噪nelec使用这些程序:

  1. 使用一个与最低阈值区间:4.5

  2. 使用一个间隔的最大阈值:19.5

  3. 手动选择三个间隔和三个阈值和使用wthresh函数阈值系数。

  4. 使用utthrset_cmd自动发现间隔和阈值函数。

  5. 使用cmddenoise函数自动执行所有流程。

  6. 使用cmddenoise与其他参数的函数。

去噪使用单一间隔

负载电力消费的信号nelec

负载nelec.matsig = nelec;

现在我们使用离散小波分析5级sym4小波。我们设置的阈值类型“年代”(软)。

wname =“sym4”;水平= 5;sorh =“年代”;

使用函数降噪信号wdencmp与阈值集4.5,这是最小值提供的GUI工具。

用力推= 4.5;[sigden_1, ~, ~, perf0 perfl2] = wdencmp (gbl(的、团体、wname水平,用力推,sorh, 1);res = sig-sigden_1;次要情节(1,1)情节(团体,“r”)轴标题(原始信号的次要情节(3、1、2)情节(sigden_1,“b”)轴标题(的去噪信号次要情节(3,1,3)情节(res,“k”)轴标题(“残留”)

图包含3轴对象。坐标轴对象1标题原始信号包含一个类型的对象。坐标轴对象2标题去噪信号包含一个类型的对象。坐标轴对象3标题残余包含一个类型的对象。

perf0, perfl2
perf0 = 66.6995
perfl2 = 99.9756

得到的结果是不好的。去噪非常有效的开始和结束的信号,但在100年和1100年之间的噪音并没有被移除。请注意,perf0值给出了比例系数设置为0,perfl2价值给保存能量的百分比。

现在,我们消除干扰信号的最大值的GUI工具提供的阈值,19.5

用力推= 19.5;[sigden_2, cxd lxd、perf0 perfl2] = wdencmp (gbl(的、团体、wname水平,用力推,sorh, 1);res = sig-sigden_2;次要情节(1,1)情节(团体,“r”)轴标题(原始信号的次要情节(3、1、2)情节(sigden_2,“b”)轴标题(的去噪信号次要情节(3,1,3)情节(res,“k”)轴标题(“残留”)

图包含3轴对象。坐标轴对象1标题原始信号包含一个类型的对象。坐标轴对象2标题去噪信号包含一个类型的对象。坐标轴对象3标题残余包含一个类型的对象。

perf0, perfl2
perf0 = 94.7860
perfl2 = 99.9564

去噪信号非常光滑。看起来不错,但如果我们看看1100年剩余位置后,我们可以看到底层的噪声的方差不是常数。一些组件的信号可能仍残留,如位置附近的1300年和1900年和2000年之间的位置。

使用间隔依赖阈值去噪(IDT)

现在,我们将使用一个interval-dependent阈值,如去噪的GUI工具。

执行离散小波分析的信号。

[系数,多头]= wavedec(团体,水平,wname);

使用GUI工具来执行interval-dependent阈值的信号nelec设置间隔三个的数量,我们得到的内容denPAR变量,可以解释如下:

  • I1 = [94]用一个阈值thr1 = 5.9

  • I2 = (94 1110)用一个阈值thr2 = 19.5

  • I3 = (1110 2000)用一个阈值thr3 = 4.5

定义interval-dependent阈值。

denPAR = {(1 94 5.9;94 1110 19.5;1110 2000 4.5]};thrParams =细胞(1级);thrParams (:) = denPAR;

显示信号的小波系数和interval-dependent阈值为每个级别的离散分析。

%复制系数cfs_beg = wrepcoef(系数、多头);%显示分解的系数图次要情节(1,1)情节(团体,“r”)轴标题(“原始信号和细节系数从1到5 ')ylabel (“年代”,“旋转”,0)k = 1:水平次要情节(6 1 k + 1)情节(cfs_beg (k,:)“颜色”,0.5 0.8 0.5)ylabel ([' D 'int2str (k)),“旋转”,0)轴持有马克西= max (abs (cfs_beg (k,:)));持有票面价值= thrParams {k};plotPar = {“颜色”,“米”,“线型”,“-”。};j = 1:尺寸(par, 1) 1块(((j, 2), par (j, 2)]、[马克西马克西],plotPar {:})结束j = 1:尺寸(par, 1)情节((par (j, 1),票面(j, 2)]、[par (j, 3)票面(j, 3)], plotPar{:})图((par (j, 1),票面(j, 2)), - - - - - - (par (j, 3)票面(j, 3)], plotPar {:})结束ylim((马克西马克西* 1.05 * 1.05))%推迟结束次要情节(6 1级+ 1)包含(“时间和空间”)

图包含6轴对象。坐标轴对象1标题原始信号和细节系数从1到5包含一个类型的对象。坐标轴对象2包含9线类型的对象。坐标轴对象3包含9线类型的对象。坐标轴对象4包含9线类型的对象。坐标轴对象5包含9线类型的对象。坐标轴对象6包含9线类型的对象。

每一个层次的k,变量thrParams {k}包含间隔和对应的阈值去噪过程。

阈值的小波系数分级,interval-by间隔,使用中包含的值thrParams变量。

使用函数wthresh,我们阈值的小波系数值之间的水平线,取而代之的是0,而其他值如果是减少sorh = ' s '或者保持不变sorh = ' h '

第一次= cumsum(多头)+ 1;第一= (end-2: 1:1);tmp =多头(end-1: 1:2);=第一+ tmp-1;k = 1:水平thr_par = thrParams {k};如果~ isempty (thr_par) cfs =系数(第一(k):去年(k));nbCFS =多头(end-k);NB_int =大小(thr_par, 1);x = [thr_par (: 1);thr_par (NB_int, 2)];阿尔夫= (nbCFS-1) / (x(结束)- x (1));打赌= 1 -阿尔夫* x (1);x =圆(阿尔夫* x +打赌);x (x < 1) = 1;x (x > nbCFS) = nbCFS; thr = thr_par(:,3);j = 1: NB_int如果j = = 1 d_beg = 0;其他的d_beg = 1;结束j_beg = x (j) + d_beg;j_end = x (j + 1);j_ind = (j_beg: j_end);慢性疲劳综合症(j_ind) = wthresh (cfs (j_ind) sorh,刺(j));结束系数(第一(k):去年(k)) =慢性疲劳综合症;结束结束

显示信号的阈值小波系数。

%复制系数。cfs_beg = wrepcoef(系数、多头);%显示分解系数。图次要情节(1,1)情节(团体,“r”)轴标题(“原始信号和细节系数从1到5 ')ylabel (“年代”,“旋转”,0)k = 1:水平次要情节(6 1 k + 1)情节(cfs_beg (k,:)“颜色”,0.5 0.8 0.5)ylabel ([' D 'int2str (k)),“旋转”,0)轴持有马克西= max (abs (cfs_beg (k,:)));%抓住票面价值= thrParams {k};plotPar = {“颜色”,“米”,“线型”,“-”。};j = 1:尺寸(par, 1) 1块(((j, 2), par (j, 2)]、[马克西马克西],plotPar {:})结束j = 1:尺寸(par, 1)情节((par (j, 1),票面(j, 2)]、[par (j, 3)票面(j, 3)], plotPar{:})图((par (j, 1),票面(j, 2)), - - - - - - (par (j, 3)票面(j, 3)], plotPar {:})结束ylim([马克西马克西* 1.05 * 1.05])结束次要情节(6 1级+ 1)包含(“时间和空间”)

图包含6轴对象。坐标轴对象1标题原始信号和细节系数从1到5包含一个类型的对象。坐标轴对象2包含9线类型的对象。坐标轴对象3包含9线类型的对象。坐标轴对象4包含9线类型的对象。坐标轴对象5包含9线类型的对象。坐标轴对象6包含9线类型的对象。

重构去噪信号。

sigden = waverec(系数、多头wname);res = sig - sigden;

显示原始的、去噪和残余信号。

图次要情节(3、1、1)的阴谋(团体,“r”)举行情节(sigden“b”)轴标题(原始和去噪信号次要情节(3、1、2)情节(sigden,“b”)轴标题(的去噪信号次要情节(3,1,3)情节(res,“k”)轴标题(“残留”)

图包含3轴对象。坐标轴对象与原有标题1和去噪信号包含2线类型的对象。坐标轴对象2标题去噪信号包含一个类型的对象。坐标轴对象3标题残余包含一个类型的对象。

比较这三个信号去噪的版本。

图绘制(sigden_1,‘g’)举行情节(sigden_2“r”)情节(sigden“k”)轴持有传奇(“去噪点”,运用马克思的,“去噪IDT”,“位置”,“北”)

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。这些对象代表去噪,去噪马克斯,去噪踊跃参与。

看着上半年的信号,很明显,使用最小值的阈值去噪是不好的。现在,我们在结束的信号放大为更多的细节。

xlim(2000年[1200])ylim (350 [180])

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。这些对象代表去噪,去噪马克斯,去噪踊跃参与。

我们可以看到,当使用最大阈值时,平滑去噪信号和信息丢失太多了。

最好的结果是由使用阈值基于区间——依赖阈值方法,我们现在将显示。

Interval-Dependent阈值的自动计算

而不是手动设置时间间隔和每一层的阈值,我们可以使用函数utthrset_cmd自动计算区间,每个区间的阈值。然后,我们完成过程运用阈值,重构,并显示信号。

%小波分析。[系数,多头]= wavedec(团体,水平,wname);siz =大小(系数);thrParams = utthrset_cmd(系数、多头);第一次= cumsum(多头)+ 1;第一= (end-2: 1:1);tmp =多头(end-1: 1:2);=第一+ tmp-1;k = 1:水平thr_par = thrParams {k};如果~ isempty (thr_par) cfs =系数(第一(k):去年(k));nbCFS =多头(end-k);NB_int =大小(thr_par, 1);x = [thr_par (: 1);thr_par (NB_int, 2)];阿尔夫= (nbCFS-1) / (x(结束)- x (1));打赌= 1 -阿尔夫* x (1);x =圆(阿尔夫* x +打赌);x (x < 1) = 1;x (x > nbCFS) = nbCFS; thr = thr_par(:,3);j = 1: NB_int如果j = = 1 d_beg = 0;其他的d_beg = 1;结束j_beg = x (j) + d_beg;j_end = x (j + 1);j_ind = (j_beg: j_end);慢性疲劳综合症(j_ind) = wthresh (cfs (j_ind) sorh,刺(j));结束系数(第一(k):去年(k)) =慢性疲劳综合症;结束结束sigden = waverec(系数、多头wname);图次要情节(2,1,1)情节(团体,“r”)轴持有情节(sigden“k”)标题(原始和去噪信号次要情节(2,1,2)情节(sigden,“k”)轴持有标题(的去噪信号)

图包含2轴对象。坐标轴对象与原有标题1和去噪信号包含2线类型的对象。坐标轴对象2标题去噪信号包含一个类型的对象。

自动Interval-Dependent去噪

在命令行模式下,我们可以使用函数cmddenoise自动计算去噪信号,基于interval-dependent系数去噪方法。这种方法进行去噪的整个过程只使用这一个函数,其中包括在本例中所述的所有步骤。

[sigden, ~, thrParams] = cmddenoise(团体、wname水平);thrParams {1}% 1级去噪参数。
ans =2×3103×0.0010 1.1100 0.0176 1.1100 2.0000 0.0045

自动去噪过程发现两个间隔:

  • I1 = [1110]用一个阈值thr1 = 17.6

  • I2 = (1110 2000)用一个阈值thr2 = 4.5

我们可以显示结果的去噪和看到,结果是好的。

图次要情节(2,1,1)情节(团体,“r”)轴持有情节(sigden“k”)标题(原始和去噪信号)举行次要情节(2,1,2)情节(sigden,“k”)轴标题(的去噪信号)

图包含2轴对象。坐标轴对象与原有标题1和去噪信号包含2线类型的对象。坐标轴对象2标题去噪信号包含一个类型的对象。

先进的自动Interval-Dependent去噪

现在,我们来看一个更完整的自动去噪的例子。

而不是使用默认值为输入参数,我们可以指定他们当调用函数。在这里,阈值选择的类型年代(软)和间隔的数量设置为3。

负载nelec.mat;sig = nelec;%的信号分析。wname =“sym4”;%小波进行分析。水平= 5;小波分解的%的水平。sorh =“年代”;%的阈值类型。nb_Int = 3;%的阈值区间。[sigden,系数,thrParams、int_DepThr_Cell BestNbOfInt] =cmddenoise(团体、wname级别、sorh nb_Int);

输出参数的变量thrParams {1}给出了去噪参数从1到5的水平。例如,以下是1级的去噪参数。

thrParams {1}
ans =3×3103×0.0010 0.0940 0.0059 0.0940 1.1100 0.0195 1.1100 2.0000 0.0045

早些时候我们发现相同的值,设置这个例子。他们对应的选择由固定的间隔三个输入参数:nb_Int = 3

自动过程表明2作为去噪的最佳数量的间隔。这个输出值BestNbOfInt = 2是一样的前一步中使用这个例子。

BestNbOfInt
BestNbOfInt = 2

的变量int_DepThr_Cell包含间隔位置和阈值的时间间隔从1到6。

int_DepThr_Cell
int_DepThr_Cell =1×6单元阵列列1到4 {[1 2000 8.3611]}{2 x3双}{3 x3双}{4 x3双}列5到6 {5 x3双}{6 x3双}

最后,我们看看值对应的位置和阈值为5的间隔。

int_DepThr_Cell {5}
ans =5×3103×0.0010 0.0940 0.0059 0.0940 0.5420 0.0184 0.5420 0.5640 0.0056 0.5640 1.1100 0.0240 1.1100 2.0000 0.0045

总结

这个例子展示了如何使用命令行模式来实现相同的功能作为去噪的GUI工具,同时给你更多的控制特定的参数值来获得更好的结果。

另请参阅

||

相关的话题