一維離散數(shù)據(jù)小波變換實用案例

前言

小波變換專業(yè)處理時變信號!其重要用途包含:突變點檢測、時頻分析、信號降噪等。本文將詳細(xì)介紹小波變換的這3種主要用途,借助具體例子來說明并總結(jié)相關(guān)函數(shù)的使用。

間斷點檢測

現(xiàn)實信號中的間斷點是較為常見的,明顯的間斷點就是信號的"突跳",反應(yīng)在數(shù)學(xué)上就是該點"一階不可導(dǎo)"!如何突跳很明顯,我們可以肉眼識別并剔除;但是如果數(shù)據(jù)本身幅值變化就很大,那么很多小的時域的間斷點憑人眼是很難發(fā)現(xiàn)和剔除的!此時我們可以使用小波變換,把原始分解到"小波域"去查看!間斷點例子如圖1所示:

存在3個間斷點的原始信號.png

其生成函數(shù)為:

x = zeros(1,500);

% 待檢測數(shù)據(jù)
for t = 1:500
    if (t<200)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*t);
    elseif (t>=200) & (t<300)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 30;
    elseif (t>=300) & (t<400)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 10;
    else
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 10 + 250*sin(2*pi*0.003*t);
    end
end

figure(1)
plot(x); title('原始信號'); grid on;
xlabel('采樣點'); ylabel('振幅');

說明:間斷點的檢查對于原始信號總體上本應(yīng)是有規(guī)律、連續(xù)、平滑變化的!但是由于偶然且劇烈的儀器或外界的干擾,導(dǎo)致在某采樣點發(fā)生了"突跳"!圖1中間斷點1和2就是這種情況。另外,如果突跳還經(jīng)常發(fā)現(xiàn)在兩個頻率信號的交界處,圖1中的間斷點3就是這種情況。

下面我們就用簡單的小波分解來檢測間斷點:一維haar小波1級分解

x = zeros(1,500);

% 待檢測數(shù)據(jù)
for t = 1:500
    if (t<200)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*t);
    elseif (t>=200) & (t<300)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 30;
    elseif (t>=300) & (t<400)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 10;
    else
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 10 + 250*sin(2*pi*0.003*t);
    end
end

% 一級分解: haar
[cA1,cD1] = dwt(x,'haar');
A1 = upcoef('a',cA1,'haar',1);
D1 = upcoef('d',cD1,'haar',1);
figure(1);
subplot(1,3,1); plot(x); title('原始信號'); grid on;
xlabel('采樣點'); ylabel('振幅');
subplot(1,3,2); plot(A1); title('時域: 原始信號低頻近似部分(點數(shù)一樣)'); grid on;
xlabel('小波域: x和y軸無量綱');
subplot(1,3,3); plot(D1); title('時域: 原始信號高頻細(xì)節(jié)部分(點數(shù)一樣)'); grid on;
xlabel('小波域: x和y軸無量綱');

效果:

圖2:一維haar小1級分解間斷點檢測結(jié)果

說明:可以看到只做了1級的小波分解,其"高頻細(xì)節(jié)"部分"系數(shù)圖像"就可以很好的辨識出原始信號的間斷點!這里需要注意的是:我們辨識間斷點看的就是無量綱的、小波域系數(shù)圖像!而不需要做系數(shù)重構(gòu)回到時間域。

總結(jié)1:小波域的高頻細(xì)節(jié)的系數(shù)圖像,專門用來檢查原始信號間斷點。

下面我們再使用db4小波基做多級(3級)分解看看:

x = zeros(1,500);

% 待檢測數(shù)據(jù)
for t = 1:500
    if (t<200)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*t);
    elseif (t>=200) & (t<300)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 30;
    elseif (t>=300) & (t<400)
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 10;
    else
        x(t) = 50.*exp(t/300).*sin(2*pi*0.01*200) + 10 + 250*sin(2*pi*0.003*t);
    end
end

% 多級(3級)分解: db4
[C,L] = wavedec(x,3,'db4');
A3=wrcoef('a',C,L,'db4',3); % 低
D3=wrcoef('d',C,L,'db4',3);
D2=wrcoef('d',C,L,'db4',2);
D1=wrcoef('d',C,L,'db4',1); % 3個高
figure(2)
subplot(2,2,1); plot(A3); title('原始信號中的低頻信號成分'); grid on;
xlabel('小波域: x和y軸無量綱');
subplot(2,2,2); plot(D3); title('原始信號中的高頻信號成分1'); grid on;
xlabel('小波域: x和y軸無量綱');
subplot(2,2,3); plot(D2); title('原始信號中的高頻信號成分2'); grid on;
xlabel('小波域: x和y軸無量綱');
subplot(2,2,4); plot(D1); title('原始信號中的高頻信號成分3'); grid on;
xlabel('小波域: x和y軸無量綱');

效果:

圖3:一維db4小波基3級分解間斷點檢測結(jié)果

說明:看最高分解級里的高頻細(xì)節(jié)圖像(右下角),由于分解的級數(shù)較多,其最高級高頻細(xì)節(jié)已經(jīng)基本屬于"只反映間斷點"!但是從整體上看很明顯可以感覺到分解的次數(shù)有些過多!單純的間斷間有了"波動起伏(很像小波基函數(shù))"!所以,針對本例的原始信號,預(yù)計做2級小波分解級足夠很好檢測間斷點。

總結(jié)2:隨著分解級數(shù)的增加,最高級高頻細(xì)節(jié)的系數(shù)圖像幾乎只反映間斷點位置!

時頻分析

我們已經(jīng)知道,小波變換專業(yè)處理時變信號。時變信號就是信號的頻率是隨著時間變化的,單純從時域來看只能通過觀察圖像變緊縮或舒張來判斷頻率是否變化,這是不精確的!如果能繪制一張橫坐標(biāo)是時間/采樣點、縱坐標(biāo)是頻率的圖像,那樣就可以很好的觀察頻率隨時間的變化!這樣的需求就需要做"時頻分析"來實現(xiàn),得到的圖像叫作"時頻圖"。

做時頻分析最常用的方法就是"短時傅里葉變換",其內(nèi)涵就是用一個"窗函數(shù)"不斷與原始信號做"滑動卷積"計算。其原理和小波變換的思想十分相近,本文主要介紹用短時傅里葉變換來實現(xiàn)時頻分析:

首先觀察一個時變信號:

圖4:時變信號

其實現(xiàn)的matlab語句為:

clear all; clc;

N = 1024;  % 總采樣點
fs = 1000;          % 采樣頻率
tt = (0:N-1)'/fs;   % 時間刻度
% 構(gòu)成信號: 注意x和tt都是列向量
f1 = 400 ; f2 = 200 ; f3 = 100 ; f4 = 50 ;
x = sin(2*pi*f1*tt).*(tt<=0.3) + sin(2*pi*f2*tt).*(tt>0.3&tt<=0.6) + ...
    sin(2*pi*f3*tt).*(tt>0.6&tt<=0.8) + sin(2*pi*f4*tt).*(tt>0.8);

figure(1);
plot(tt,x);
axis([0 max(tt) -inf inf]); 
xlabel('時間/s');
ylabel('振幅');
title('原始時域信號');

從圖像和實現(xiàn)語句可以看出:該信號有4個頻率的變換,反應(yīng)在時域圖像上就是圖像變得緊密或舒張!對于這樣簡單的復(fù)合函數(shù)信號,我們確實可以直接從時域圖像中判斷其"頻域-時間"的變化關(guān)系!但這只是因為原始信號簡單。

下面我們用4種不同節(jié)點個數(shù)的窗函數(shù)(漢寧窗)來實現(xiàn)短時傅里葉變換!其用到的函數(shù)和實現(xiàn)過程如下matlab程序:

clear all; clc;

N = 1024;  % 總采樣點
fs = 1000;          % 采樣頻率
tt = (0:N-1)'/fs;   % 時間刻度
% 構(gòu)成信號: 注意x和tt都是列向量
f1 = 400 ; f2 = 200 ; f3 = 100 ; f4 = 50 ;
x = sin(2*pi*f1*tt).*(tt<=0.3) + sin(2*pi*f2*tt).*(tt>0.3&tt<=0.6) + ...
    sin(2*pi*f3*tt).*(tt>0.6&tt<=0.8) + sin(2*pi*f4*tt).*(tt>0.8);

figure(1);
plot(tt,x);
axis([0 max(tt) -inf inf]); 
xlabel('時間/s');
ylabel('振幅');
title('原始時域信號');

% 短時傅里葉變換操作:
figure(2);

% 因為tfr把頻率軸限制在-0.5~0.5之間,因此恢復(fù)"真實頻率"的時候要x2
h = hanning(63);  % 63個節(jié)點的漢寧窗
[tfr,t,f] = tfrstft(x,1:N,N,h);  % 參數(shù)一個都不能少 
subplot(2,2,1); 
contour( tt, f(1:N/2)*fs*2, abs(tfr(1:N/2,:)) );  % 等值線圖
xlabel('時間/s');  ylabel('頻率/Hz'); title('63節(jié)點漢寧窗時頻圖');
grid on;

h = hanning(127); % 127個節(jié)點的漢寧窗
[tfr,t,f] = tfrstft(x,1:N,N,h);  % 參數(shù)一個都不能少 
subplot(2,2,2); 
contour( tt, f(1:N/2)*fs*2, abs(tfr(1:N/2,:)) );  % 等值線圖
xlabel('時間/s');  ylabel('頻率/Hz'); title('127節(jié)點漢寧窗時頻圖');
grid on;

h = hanning(255); % 255個節(jié)點的漢寧窗
[tfr,t,f] = tfrstft(x,1:N,N,h);  % 參數(shù)一個都不能少 
subplot(2,2,3); 
contour( tt, f(1:N/2)*fs*2, abs(tfr(1:N/2,:)) );  % 等值線圖
xlabel('時間/s');  ylabel('頻率/Hz'); title('255節(jié)點漢寧窗時頻圖');
grid on;

h = hanning(511); % 511個節(jié)點的漢寧窗
[tfr,t,f] = tfrstft(x,1:N,N,h);  % 參數(shù)一個都不能少 
subplot(2,2,4); 
contour( tt, f(1:N/2)*fs*2, abs(tfr(1:N/2,:)) );  % 等值線圖
xlabel('時間/s');  ylabel('頻率/Hz'); title('511節(jié)點漢寧窗時頻圖');
grid on;

效果:

圖5:4種窗函數(shù)節(jié)點的時頻圖

說明1:從結(jié)果圖中可以很明顯觀察"頻率-時間"的變化關(guān)系!但是我們注意到窗函數(shù)節(jié)點不同時,時頻圖的樣式有些差別!當(dāng)節(jié)點/窗口太小時,縱坐標(biāo)頻率分辨率不夠(有重疊)!當(dāng)節(jié)點/窗口太大時,橫坐標(biāo)時間分辨率不夠(有重疊)!所以不同信號窗函數(shù)大小的選取是一個值得考量的問題。但是不管選的好不好,視頻圖都可以很好反應(yīng)頻率-時間變化關(guān)系。

說明2:這個例子的分段函數(shù)信號很簡單,就是單純的4個差別較大的頻率信號的組合!所以反應(yīng)在時頻圖上就是這種"直線階梯間隔"的樣式!對于現(xiàn)實的信號不會用這么明顯的間隔區(qū)分,時頻圖各段更多的是連在一起的!就像一個完整連續(xù)的xy函數(shù)圖像一樣。時頻圖的主要目的就是為了觀察頻率隨時間的變換關(guān)系。

說明3:等值線圖中有反應(yīng)了3條信息:時間、頻率、振幅

短時傅里葉變換用的函數(shù)語法總結(jié),首先總結(jié)變換類的函數(shù):tfrstft

N = 1024;

h = hanning(63);  % 63個節(jié)點的漢寧窗
[tfr,t,f] = tfrstft(x,1:N,N,h);  % 參數(shù)一個都不能少 

% hanning(N):漢寧窗窗口大小N的設(shè)置;
% tfrstft參數(shù):x是原始信號,1:N是采樣點數(shù)組,N是總點數(shù),h就是上面設(shè)置的漢寧窗;
% 左邊返回值:tfr是短時傅里葉變換系數(shù),t為系數(shù)tfr對應(yīng)的時刻,f為歸一化頻率向量;

等值線畫圖工具:contour

[tfr,t,f] = tfrstft(x,1:N,N,h); 

contour( t, f(1:N/2)*fs*2, abs(tfr(1:N/2,:)) );
% contour參數(shù):
% t是原始信號的時間;
% f(1:N/2)*fs*2歸一化頻率:根據(jù)奈奎斯特定律只取前一半;記得*2才回到原始頻率;
% abs(tfr(1:N/2,:))多時傅里葉變換系數(shù):同樣的也是只取前一半。

總結(jié)3:時頻分析的目的是觀察原始信號中頻率隨時間的變換規(guī)律,窗口大小是個較為關(guān)鍵的參數(shù)。


關(guān)于時頻分析,這里再補(bǔ)充一個實際的案例。案例程序和原始數(shù)據(jù)這里下載

地震記錄到的實際有效數(shù)據(jù)為:

圖6:時頻分析實際數(shù)據(jù)原始信號

用等值線圖展示的時頻分析:

圖7:等值線圖展示

mesh二維圖像展示:

圖8:mesh二維圖像展示

mesh三維圖像展示:

圖9:mesh三維圖像展示

小波去噪

噪聲具有隨機(jī)性,很難完全剔除!小波再牛逼,依舊無法除干凈!這是前言。最為常用的小波去噪方法為"閾值去噪",該方法的去噪思路為:噪聲一般為高頻成分,因此設(shè)定一個閾值,讓分解得到的各個高頻細(xì)節(jié)部分和這個閾值做對比:超過閾值的高頻系數(shù)認(rèn)為是噪聲并把值設(shè)為0(刪除),不超過則認(rèn)為是有效信號值不變(保留)。 該方法大體可分為2部分:1. 閾值選取;2. 小波去噪。這2部分matlab都有自帶的函數(shù),先列舉如下:

  • 小波閾值獲取函數(shù):ddencmp、thselect、wbmpen等;

  • 小波去噪的函數(shù):wden、wdencmp、wthresh等;

后面會具體介紹這些自帶函數(shù)的使用。"閾值去噪"法又可分為下面的3種不同的"流程"來實現(xiàn),它們將借助上面提到的函數(shù):

  • 強(qiáng)制去噪處理:該流程是將小波分解后的"高頻系數(shù)"全為0!即濾掉所有的高頻成分!然后再做"重構(gòu)/恢復(fù)原始信號"。這種方法操作簡單,處理后的信號很平滑,因此很容易缺失部分有用信號。

  • 默認(rèn)閾值去噪處理:該流程先利用ddencmp(閾值獲取函數(shù))生成信號的"默認(rèn)閾值",然后利用wdencmp(去噪函數(shù))進(jìn)行去噪處理。用wden函數(shù)可以把兩步歸為一步完成,即wden與wdencmp其實是一樣的,只不過wden更全自動一些(一步把"取默認(rèn)閾值"和"去噪"全在它自己里做了)。

  • 人為給定閾值去噪處理:實際問題中閾值可以通過經(jīng)驗公式獲得,也就是說閾值是可以人為給定的!人為給定的閾值要比第2種流程中默認(rèn)的閾值可信度高。若閾值人為給定,后面去噪函數(shù)選wthresh。注意:對每一個高頻成分(系數(shù))都要手動給閾值,最后再"重構(gòu)/恢復(fù)原始信號"。

注意1:默認(rèn)法法中,可以用ddencmp + wdencmp搭配的方式完成;也可以用wden一步完成。最常用的是前一種。

注意2:默認(rèn)法它的每一級分解的閾值都是固定的!但是人為法可以對不同級的高頻系數(shù)給不同的閾值!完全的自由。

注意3:默認(rèn)法2人為法3最大的區(qū)別在于閾值是誰給的。那么介于2和3之間的,就是用thselect函數(shù)來選擇性的給定閾值,該函數(shù)內(nèi)置了多種選項供人去選(都是很常用的,可以就當(dāng)做經(jīng)驗公式),但每種算法還是固定的,所以是介于2和3之間的一種"給閾值"的方式。

下面我們將結(jié)合具體的例子要使用上面的3種流程和提到的各種自帶函數(shù)

(1)上面所有方法綜合在一起處理噪聲信號的案例:

% 去噪函數(shù)2: wdencmp  (和wden是一樣的)  
% wdencmp中的參數(shù)很多時ddencmp給的!例如: thr、sorh、keepapp

clear; clc;

% 加載信號
load leleccum;
% 采樣點
s = leleccum(300:2000);

% 原始信號圖像:
figure(1);
plot(s);
xlabel('采樣點'); ylabel('振幅');
grid on;
title('原始信號');

% 對原始信號做小波的3級分解, 并做系數(shù)提取:
[c,l] = wavedec(s,3,'db4');
a3 = appcoef(c,l,'db4',3);  % 低頻近似部分; 3代表層數(shù)
d3 = detcoef(c,l,3);
d2 = detcoef(c,l,2);
d1 = detcoef(c,l,1);

figure(2);
% 強(qiáng)制去噪處理: 無需任何新的函數(shù)
%  高頻"系數(shù)"全搞成0, 然后再重構(gòu)
dd3 = zeros(1,length(d3));
dd2 = zeros(1,length(d2));
dd1 = zeros(1,length(d1));
c1 = [a3 dd3 dd2 dd1];
s1 = waverec(c1,l,'db4');  % 重構(gòu)
subplot(2,2,1);
plot(s1);
xlabel('采樣點'); ylabel('振幅');
grid on;
title('強(qiáng)制去噪處理');

% 默認(rèn)閾值去噪處理: 用ddencmp給出信號的默認(rèn)閾值, 然后用wdencmp做去噪
[thr,sorh,keepapp] = ddencmp('den','wv',s);
s2 = wdencmp('gbl', s, 'db4', 3, thr, sorh, keepapp);
subplot(2,2,2);
plot(s2);
xlabel('采樣點'); ylabel('振幅');
grid on;
title('默認(rèn)閾值去噪處理: wdencmp函數(shù)');

% 默認(rèn)閾值去噪處理2: 用wden函數(shù)(其實和wdencmp是一樣的, 只不過wden更全自動一些)
s3 = wden(s,'minimaxi','s','mln',3,'db4');
subplot(2,2,3);
plot(s3);
xlabel('采樣點'); ylabel('振幅');
grid on;
title('默認(rèn)閾值去噪處理: wden函數(shù)');

% 人為給定閾值去噪處理: 閾值純?nèi)藶榻o, 用wthresh函數(shù): 一般是對每一個高頻成分(系數(shù))都做閾值處理
softd1 = wthresh(d1, 's', 10);  % 10是純?nèi)私o的閾值
softd2 = wthresh(d2, 's', 10);  
softd3 = wthresh(d3, 's', 25);
c2 = [a3 softd3 softd2 softd1];
s4 = waverec(c2,l,'db4');  % 小波重構(gòu)
subplot(2,2,4);
plot(s4);
xlabel('采樣點'); ylabel('振幅');
grid on;
title('人為給定閾值去噪處理');

figure(1)原始信號:

圖9:帶噪聲的原始信號

figure(2)4種處理方法效果圖:

圖10:4種閾值去噪方式的效果圖

說明:可以看出4種閾值去噪方式的效果都很好!都可以把原信號中的"緊密"部分給有效的去掉!這也正好說明原信號的噪聲都是集中早高頻部分,即高頻噪聲反應(yīng)在圖像上就是圖像突然變的緊密。另外:兩種默認(rèn)閾值去噪的結(jié)果幾乎是一樣的,其實參數(shù)給定一樣它們的結(jié)果就是一樣的!再重復(fù)一遍上面的注意1:默認(rèn)法法中,可以用ddencmp + wdencmp搭配的方式完成;也可以用wden一步完成。兩種是完全一樣的。

下面我們就來總結(jié)例子中用到函數(shù)的語法:

  • 默認(rèn)閾值去噪處理1:ddencmp + wdencmp
% 信號默認(rèn)閾值提?。?[thr, sorh, keepapp, crit] = ddencmp(IN1, IN2, X);

% ddencmp參數(shù):
% IN1取'den'或'cmp':'den'表示進(jìn)行去噪,'cmp'表示進(jìn)行壓縮;
% IN2取'wv'或'wp','wv'表示選擇小波,'wp'表示選擇小波;
% X為原始信號;

% 左邊返回值:
% thr:閾值;
% sorh(soft or hard):軟閾值或硬閾值選擇參數(shù);
% keepapp:是否保存低頻信號:0或1;
% crit:熵名(只在選擇小波包時使用)。

% 本案例中的形式為:
[thr, sorh, keepapp] = ddencmp('den', 'wv', s);
% 小波去噪處理:
s2 = wdencmp('gbl', X, 'wname', N, thr, sorh, keepapp);

% wdencmp參數(shù):
% 'gbl'(gloabl):每一層都采用同一個閾值進(jìn)行處理;
% X:原始信號;
% 'waname':小波基函數(shù);
% N:小波分解的層數(shù);
% thr、sorh、keepapp:ddencmp的返回值;其中keepapp為1表示低頻系數(shù)不進(jìn)行閾值量化,為0則要做;

% 左邊返回值:s2表示去噪后的結(jié)果

% 本案例中的形式為:
s2 = wdencmp('gbl', s, 'db4', 3, thr, sorh, keepapp);
  • 默認(rèn)閾值去噪處理2:wden
s3 = wden(X, TPRT, sorh, scal, N, 'wname');

% wden參數(shù):
% X:原始信號;
% TPTR:閾值選取的規(guī)則,它有4種可選:
%      'rigrsure':是一種基于Stein的無偏似然估計原理的自適應(yīng)閾值選擇;
%      'sqtwolog':是一種固定的閾值形式;
%      'heursure':前兩種方式的綜合,所選擇的是最優(yōu)預(yù)測變量閾值;適用于信噪比較?。?%      'minimaxi':是一種根據(jù)最小方差的固定閾值選擇形式。
% sorh:是選擇軟閾值還是硬閾值;一般都選s;
% scal:閾值尺度改變的比例,它有3種選擇:
%      'one':基本模式;可以忽略必須估計的噪聲層次;
%      'sln':非白噪聲的基本模式,且在每個分解的層次上都估計噪聲的層次,以此來改變閾值的尺度;
%      'mln':不同分解層次的小波進(jìn)行獨立的噪聲估計。
% N:分解的層次;
% 'wname':小波基函數(shù)。

% 左邊返回值:s3表示去噪后的結(jié)果

% 本案例中的形式:
s3 = wden(s,'minimaxi','s','mln',3,'db4');

補(bǔ)充:關(guān)于ddencmpwdencmp、wden更細(xì)節(jié)用法參考這篇文章。

  • 人為給定閾值去噪處理:wthresh
s4 = wthresh(x, sorh, T);

% wthresh參數(shù):
% x:小波分解后的各個系數(shù)(可以是低頻和高頻都做)
% sorh:是選擇軟閾值還是硬閾值;一般都選s;
% T:純?nèi)藶榻o定的閾值

% 左邊返回值:s4表示去噪后的結(jié)果

% 本案例中的形式:
% 先做小波分解和各個系數(shù)的提?。?[c,l] = wavedec(s,3,'db4');
a3 = appcoef(c,l,'db4',3);  
d3 = detcoef(c,l,3);
d2 = detcoef(c,l,2);
d1 = detcoef(c,l,1);
% 然后對各個系數(shù)(一般只做高頻系數(shù))的閾值(人給,可不一樣)判斷:
softd1 = wthresh(d1, 's', 10);  
softd2 = wthresh(d2, 's', 10);  
softd3 = wthresh(d3, 's', 25);  % 10和25是純?nèi)私o的閾值

注意:人為給定法強(qiáng)制去噪法,都相對于讓各級的高頻系數(shù)與閾值做比較(強(qiáng)制法直接弄成0),然后把"新的高頻系數(shù)(保留或去除)"與低頻近似部分做重構(gòu)/恢復(fù)原始信號,即完成了去噪。

  • 介于默認(rèn)和人為給定之間的閾值給定方法:thselect
thr = thselect(X, TPTR);

% thselect參數(shù):
% X:原始信號;
% TPTR:閾值選取的規(guī)則;

% 左邊返回值:thr就是閾值

說明:人為給定閾值中的10和25都是純?nèi)私o的,這2個數(shù)值可以參考用thselect計算的幾種結(jié)果。

至此,小波去噪案例和相關(guān)函數(shù)的使用語法就介紹完畢了。


總結(jié)

本文介紹了使用小波完成:間斷點識別、時頻分析(短時傅里葉變換)、信號去噪。下面把文中得到的一些有用結(jié)論再列舉如下:

  • 小波域的高頻細(xì)節(jié)的系數(shù)圖像,專門用來檢查原始信號間斷點;
  • 隨著分解級數(shù)的增加,最高級高頻細(xì)節(jié)的系數(shù)圖像幾乎只反映間斷點位置!
  • 時頻分析的目的是觀察原始信號中頻率隨時間的變換規(guī)律,窗口大小是個較為關(guān)鍵的參數(shù);現(xiàn)實情況時頻圖基本上都是連在一起的;
  • 小波去噪用到的函數(shù)較多,并且很多時配套使用。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容