一維離散小波變換函數(shù)使用總結(jié)

前言

matlab自帶的小波分析工具非常全!實際工作中直接用即可啤咽。但是剛開始使用會遇到挫折:它的函數(shù)太多婴程,并且它們的"名稱廓奕、功能、配套使用"等要求都有些"相近"档叔,很容易導致糊涂桌粉!因此本文的總結(jié)與配套實例很具有參考價值!

下面先列舉3條關(guān)鍵理解衙四,后面會用到:

  • 小波分解铃肯,分解到的"不是頻率域"!可以抽象理解為"小波域"传蹈,但其實沒有實際內(nèi)涵押逼!傅里葉變換到頻率域是有實際內(nèi)涵的;
  • 小波分解得到的"小波系數(shù)"是"沒有量綱"的惦界!它其實是"沒有實際意義的數(shù)"挑格,需要做系數(shù)重構(gòu)才能從"小波域"再轉(zhuǎn)回到"時域";
  • "系數(shù)重構(gòu)"與"重構(gòu)信號"不是一個東西表锻!系數(shù)重構(gòu)就是把無量綱的小波分解系數(shù)變回到有意義的"時域"恕齐;"重構(gòu)信號"就是把分解的完整恢復(fù)回去。

幾種函數(shù)的說法與適用處

下面介紹最容易讓人糊涂的matlab一些自帶函數(shù)的說法與用途(都是針對離散小波變換)瞬逊,不同的函數(shù)有不同的適用處搭配函數(shù).

分解與重構(gòu)/恢復(fù)信號:

  • 1級分解重構(gòu)原始信號函數(shù)為: dwtdwt2idwtidwt2显歧;
  • 多級(包括1級)分解重構(gòu)原始信號函數(shù)為: wavedecwavedec2waverecwaverec2;所以wavedec可涵蓋dwt确镊。

系數(shù)重構(gòu):需理解其作用 √ √ √

  • 1級分解的系數(shù)重構(gòu)用函數(shù)的是: upcoefupcoef2士骤;

  • 多級分解的系數(shù)重構(gòu)用函數(shù)的是: wrcoefwrcoef2

系數(shù)提壤儆颉:

  • 多級分解低頻近似系數(shù)提瓤郊 :appcoefappcoef2
  • 多解分解高頻細節(jié)系數(shù)提戎枷铩:detcoefdetcoef2巨缘。

說明:"系數(shù)提取"只有"多級分解"才會用的到! 1級分解是不需要"系數(shù)提取"的采呐!因為就分成了低頻和高頻2個部分若锁,直接用1維或2維分解函數(shù)的返回結(jié)果就行了!所以:多級分解的系數(shù)提取斧吐,就相當于1級分解后的返回結(jié)果的直接畫圖又固。


上面就是容易搞混的幾個操作與使用搭配仲器。

還是要著重強調(diào)一點:用自帶的函數(shù)做完"小波分解"后,得到的"小波系數(shù)"是"沒有量綱"的仰冠!可以理解為原始信號域映射到小波域(小波域不是什么具體的東西乏冀,只是為了方便理解)!只有把分解出來的"小波系數(shù)"再做"系數(shù)重構(gòu)"后洋只,才能回到原始的信號域辆沦,得到原始信號的不同的低頻和高頻子信號成分(還是時域的顯示)。

下面我們先給出具體的例子(一維離散數(shù)據(jù))木张,再總結(jié)每個函數(shù)具體的語法:

  • 例子1:一維信號1級分解(dwt)众辨、系數(shù)重構(gòu)(upcoef)端三、重構(gòu)/恢復(fù)信號(idwt):
clc; clear;

% 導入自帶的一個一維電壓信號, 取前4096個點
load leleccum;
s = leleccum(1:4096);

% 一級"分解": 時域 → 小波域
% 說明: 2個"系數(shù)(低+高)"的尺寸全部是一半 2048
% 命令: dwt
[cA1,cD1] = dwt(s,'haar');
figure(1);
subplot(2,2,1); plot(cA1); title('小波域: 低頻近似部分(點數(shù)少一半)'); grid on;
xlabel('小波域: 橫軸坐標無實際意義');
subplot(2,2,2); plot(cD1); title('小波域: 高頻細節(jié)部分(點數(shù)少一半)'); grid on;
xlabel('小波域: 橫軸坐標無實際意義');

% 1級分解系數(shù)"重構(gòu)": 小波域 → 時域
% 說明: 2個"子信號(低+高)"的尺寸全部和原始大小一樣 4096O侠瘛!
% 命令: upcoef
A1 = upcoef('a',cA1,'haar',1);
D1 = upcoef('d',cD1,'haar',1);
subplot(2,2,3); plot(A1); title('時域: 原始信號低頻近似部分(點數(shù)一樣)'); grid on;
xlabel('采樣點'); ylabel('振幅');
subplot(2,2,4); plot(D1); title('時域: 原始信號高頻細節(jié)部分(點數(shù)一樣)'); grid on;
xlabel('采樣點'); ylabel('振幅');

% 重構(gòu)原始信號: 參數(shù)用的還是分解出的系數(shù)
% 命令: idwt
s_rec = idwt(cA1,cD1,'haar');
figure(2);
subplot(1,2,1); plot(s); title('原始時域信號: 4096個采樣點'); grid on;
xlabel('采樣點'); ylabel('振幅');
subplot(1,2,2); plot(s_rec); title('重構(gòu)原始信號: 點數(shù)一樣'); grid on;
xlabel('采樣點'); ylabel('振幅');
suptitle('一維原始信號與重構(gòu)原始信號');

figure(1)效果:

圖1:一維1級小波(域)系數(shù)圖像與系數(shù)重構(gòu)時域子信號

figure(2)效果:

圖2:原始信號與一維1級分解后重構(gòu)信號對比
  • 例子2:一維信號多級分解(wavedec)郊闯、系數(shù)重構(gòu)(wrcoef)妻献、系數(shù)提取(appcoef + detcoef)、重構(gòu)/恢復(fù)信號(idwt):
clc; clear;

% 導入自帶的一個一維電壓信號, 取前4096個點
load leleccum;
s = leleccum(1:4096);

% 多尺度/級分解:
% 命令: wavedec
[C,L]=wavedec(s,3,'db1');

% 系數(shù)提取: 提取經(jīng)過變換之后的信號: 小波域下的低頻系數(shù)(近似信息)和高頻系數(shù)(細節(jié)信號), 即"時域→小波域"!
% 說明: 系數(shù)提取是多級分解才用团赁!1級分解有就分成2個部分育拨,不需要提取。
% 命令: appcoef低頻系數(shù)提取; detcoef高頻系數(shù)提取
cA3=appcoef(C,L,'db1',3);  % 低: 3表示第三層
cD3=detcoef(C,L,3); 
cD2=detcoef(C,L,2);
cD1=detcoef(C,L,1); % 3個高: 最后的數(shù)字表示的是層數(shù)
figure(1)
% 4個部分長度不一樣欢摄!
subplot(2,2,1); plot(cA3); title('3級分解中低頻近似部分'); grid on;  % 長度 1/2^3 = 1/8
xlabel('小波域: 橫軸坐標無實際意義');
subplot(2,2,2); plot(cD3); title('3級分解中高頻細節(jié)部分'); grid on;  % 長度 1/2^3 = 1/8
xlabel('小波域: 橫軸坐標無實際意義');
subplot(2,2,3); plot(cD2); title('2級分解中高頻細節(jié)部分'); grid on;  % 長度 1/2^2 = 1/4
xlabel('小波域: 橫軸坐標無實際意義');
subplot(2,2,4); plot(cD1); title('1級分解中高頻細節(jié)部分'); grid on;  % 長度 1/2^1 = 1/2
xlabel('小波域: 橫軸坐標無實際意義');
suptitle('時域→小波域');

% 多級重構(gòu)系數(shù): 從小波域還原出信號高頻部分的子信號, 即從"小波域→時域"熬丧!
% 命令: wrcoef  參數(shù)中a是低頻, d是高頻
A3=wrcoef('a',C,L,'db1',3); % 低
D3=wrcoef('d',C,L,'db1',3);
D2=wrcoef('d',C,L,'db1',2);
D1=wrcoef('d',C,L,'db1',1); % 3個高
figure(2)
subplot(2,2,1); plot(A3); title('原始信號中的低頻信號成分'); grid on;
xlabel('采樣點'); ylabel('振幅');
subplot(2,2,2); plot(D3); title('原始信號中的高頻信號成分1'); grid on;
xlabel('采樣點'); ylabel('振幅');
subplot(2,2,3); plot(D2); title('原始信號中的高頻信號成分2'); grid on;
xlabel('采樣點'); ylabel('振幅');
subplot(2,2,4); plot(D1); title('原始信號中的高頻信號成分3'); grid on;
xlabel('采樣點'); ylabel('振幅');
suptitle('小波域→時域');

% 重構(gòu)原始信號: 濾波后單純的恢復(fù)原始信號
% 命令: waverec
s_rec = waverec(C,L,'db1');
figure(3);
subplot(1,2,1); plot(s); title('原始信號'); grid on;
xlabel('采樣點'); ylabel('振幅');
subplot(1,2,2); plot(s_rec); title('重構(gòu)原始信號'); grid on;
xlabel('采樣點'); ylabel('振幅');
suptitle('時域原始與重構(gòu)原始信號');

figure(1)效果:

圖3:一維多級分解后小波(域)系數(shù)圖像

figure(2)效果:

圖4:一維多級分解后系數(shù)重構(gòu)時域子信號

figure(3)效果:

圖5:原始信號與一維多級分解后重構(gòu)信號對比

函數(shù)語法總結(jié)

語法總結(jié)按照上面的2個例子(一維離散數(shù)據(jù))進行。

(1)首先總結(jié)例1中的函數(shù)語法:

  • 一維1級分解函數(shù):dwt
[cA1,cD1] = dwt(x,'wavename');

% dwt參數(shù):x是原始信號怀挠,'wavename'是自己選的小波基函數(shù)(例如'haar')
% 左邊返回值:cA1低頻近似系數(shù)析蝴,cD1高頻細節(jié)系數(shù)。
  • 一維1級系數(shù)重構(gòu)函數(shù):upcoef
A1 = upcoef('a', cA1, 'wavename', 1);   % 低頻系數(shù)重構(gòu)
D1 = upcoef('d', cD1, 'wavename', 1);   % 高頻系數(shù)重構(gòu)

% upcoef參數(shù):'a'表示低頻近似/'d'表示高頻細節(jié)绿淋,cA1與cD1系數(shù)闷畸,1就是當前是1解分解(不變);
% 左邊返回值:A1是低頻近似系數(shù)的重構(gòu)結(jié)果,D1是高頻細節(jié)系數(shù)的重構(gòu)結(jié)果吞滞。
  • 一維1級分解重構(gòu)/恢復(fù)信號函數(shù):idwt
s_rec = idwt(cA1,cD1,'wavename');

% idwt參數(shù):cA1和cD1就是dwt分解得到的低頻近似和高頻細節(jié)的系數(shù)佑菩;
% 左邊返回值:s_rec就是重構(gòu)/恢復(fù)的原始信號。

(2)總結(jié)例2中的函數(shù)語法:

  • 一維多級分解函數(shù):wavedec
[C,L] = wavedec(s, N, 'wavename');

% wavedec參數(shù):s是原始信號裁赠,N是分解級數(shù)殿漠,'wavename'小波基函數(shù);
% 左邊返回值:C是小波分解后的各個系數(shù)佩捞,L是相應(yīng)小波系數(shù)的個數(shù)绞幌;

這個函數(shù)的返回值可能憑語言不好理解,直接看圖6示意圖就很好理解失尖。注意到:C中是所有分解出來的東西(系數(shù))的一個大匯總啊奄,即都在一個大矩陣里渐苏!所以就需要從C中把各個系數(shù)提取出來

圖6:wavedec返回值C和L的含義示意圖
  • 一維多級系數(shù)提取函數(shù):appcoefdetcoef
% 以3級分解為例:
[C,L] = wavedec(s,3,'db1'); 

% 各級系數(shù)提裙娇洹:

% 最后剩的那個低頻近似部分(1個)的系數(shù)提惹砀弧:appcoef
cA3 = appcoef(C, L, 'wavename', N); 
%  appcoef參數(shù):C和L就是上面分解出來的東西,'wavename'和分解用的小波基一致庄新,N和分解的級數(shù)一致鞠眉;
% 左邊返回值:最后那個低頻近似的系數(shù)(從C和L中提取出來了)。

% 每一級中的高頻細節(jié)部分(N個)的系數(shù)提仍裾:detcoef
cD3 = detcoef(C, L, 3); 
cD2 = detcoef(C, L, 2);
cD1 = detcoef(C, L, 1); 
% detcoef參數(shù):C和L和同意械蹋,后面的數(shù)字就是分解的層數(shù);
% 左邊返回值:每一級高頻近似部分的系數(shù)(從C和L中提取出來)

說明:分解N級羞芍,要做N個高頻細節(jié)部分的的系數(shù)提取哗戈,低頻近似只用做一次

  • 一維多級系數(shù)重構(gòu)函數(shù):wrcoef
% 以3級分解為例:
[C,L] = wavedec(s,3,'db1'); 

% 直接上實例說明:'wavename'用的是'db1'
A3 = wrcoef('a',C,L,'db1',3);  % 最后那個低頻近似部分的系數(shù)重構(gòu)
D3 = wrcoef('d',C,L,'db1',3);  % 3級高頻細節(jié)部分系數(shù)重構(gòu)
D2 = wrcoef('d',C,L,'db1',2);  % 2級高頻細節(jié)部分系數(shù)重構(gòu)
D1 = wrcoef('d',C,L,'db1',1);  % 1級高頻細節(jié)部分系數(shù)重構(gòu)

% wrcoef參數(shù):'a'或'd'代表"低頻近似"或"高頻細節(jié)"荷科,C和L同意唯咬,最后的數(shù)字是該部分所在的級數(shù);
% 左邊返回指:各個部分系數(shù)重構(gòu)的結(jié)果畏浆。

說明:分解N級胆胰,要做N個高頻細節(jié)部分的的系數(shù)重構(gòu)低頻近似只用做一次刻获!

  • 一維多級分解重構(gòu)/恢復(fù)信號函數(shù):waverec
s_rec = waverec(C,L,'wavename');

% waverec參數(shù):C和L還是同意蜀涨,'wavename'和上面用的小波基保持一致;
% 左邊返回值:s_rec就是重構(gòu)/恢復(fù)的原始信號蝎毡。

注意:重構(gòu)/恢復(fù)原始信號厚柳,用的是分解得到的系數(shù)!而不是系數(shù)重構(gòu)后的東西顶掉。


至此草娜,一維離散小波1級和多級分解所有會用到的函數(shù)就都介紹完畢了!以表總結(jié):

? 一維1級分解 一維多級分解
分解函數(shù) dwt wavedec
系數(shù)提取函數(shù) 不需要 appcoefdetcoef
系數(shù)重構(gòu)函數(shù) upcoef wrcoef
重構(gòu)/恢復(fù)信號函數(shù) idwt waverec
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痒筒,一起剝皮案震驚了整個濱河市宰闰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌簿透,老刑警劉巖移袍,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異老充,居然都是意外死亡葡盗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門啡浊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來觅够,“玉大人胶背,你說我怎么就攤上這事〈龋” “怎么了钳吟?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窘拯。 經(jīng)常有香客問我红且,道長,這世上最難降的妖魔是什么涤姊? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任暇番,我火速辦了婚禮,結(jié)果婚禮上思喊,老公的妹妹穿的比我還像新娘壁酬。我一直安慰自己,他們只是感情好搔涝,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布厨喂。 她就那樣靜靜地躺著,像睡著了一般庄呈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上派阱,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天诬留,我揣著相機與錄音,去河邊找鬼贫母。 笑死文兑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的腺劣。 我是一名探鬼主播绿贞,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼橘原!你這毒婦竟也來了籍铁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤趾断,失蹤者是張志新(化名)和其女友劉穎拒名,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芋酌,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡增显,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了脐帝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片同云。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡糖权,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炸站,到底是詐尸還是另有隱情温兼,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布武契,位于F島的核電站募判,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咒唆。R本人自食惡果不足惜届垫,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望全释。 院中可真熱鬧装处,春花似錦、人聲如沸浸船。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽李命。三九已至登淘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間封字,已是汗流浹背黔州。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阔籽,地道東北人流妻。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像笆制,于是被迫代替她去往敵國和親绅这。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容