離散ウェーブレット変換→離散ウェーブレット逆変換の再構成がうまくいかない
Show older comments
% %以下のコードの通りに11階の離散ウェーブレット変換を行った後に離散ウェーブレット逆変換を行い,再構成を行った結果,
% 元のデータとはかけ離れたものになってしまった.どこを直せばうまく再構成できるか教えてください.
%以下用いたコード
%10列のデータをインポート
M=table2array(Untitled);
for N=1:10
%1列ずつ参照を繰り返す
A=M(:,N);
B = A.';
wname='db1';
%11レベルの離散ウェーブレット変換
[c,l] = wavedec(B,11,wname);
ccd1=wrcoef('d',c,l,wname,1);
ccd2=wrcoef('d',c,l,wname,2);
ccd3=wrcoef('d',c,l,wname,3);
ccd4=wrcoef('d',c,l,wname,4);
ccd5=wrcoef('d',c,l,wname,5);
ccd6=wrcoef('d',c,l,wname,6);
ccd7=wrcoef('d',c,l,wname,7);
ccd8=wrcoef('d',c,l,wname,8);
ccd9=wrcoef('d',c,l,wname,9);
ccd10=wrcoef('d',c,l,wname,10);
cad11=wrcoef('a',c,l,wname,11);
Zall=ccd1+ccd2+ccd3+ccd4+ccd5+ccd6+ccd7+ccd8+ccd9+ccd10+cad11;
ZZZ(:,N)=Zall;
end
2 Comments
Naoya
on 31 Oct 2022
確認できるレベルでは、
ccd11=wrcoef('d',c,l,wname,11);
も完全な再構成には必要になると思いますがいかがでしたでしょうか?
参考までとなりますが、Level3までの例となりますが、以下にて完全な再構成を再現できます。
% 時系列信号のサンプルの読み込み
[X,T] = simpleseries_dataset;
X = seq2con(X);
X = X{1};
wname = 'db1';
[C,L] = wavedec(X,3,wname); % Lev.3 まで 離散ウェーブレット分解
a3 = wrcoef('a',C,L,wname,3); % Lev.3 Approximation成分
d3 = wrcoef('d',C,L,wname,3); % Lev.3 Detail 成分
d2 = wrcoef('d',C,L,wname,2); % Lev.2 Detail 成分
d1 = wrcoef('d',C,L,wname,1); % Lev.1 Detail 成分
X_rec = a3 + d3 + d2 + d1; % それぞれの分解成分を結合
figure(1),plot(X), hold on, plot(X_rec); % 元信号との比較
YUKI K
on 31 Oct 2022
Answers (0)
Categories
Find more on 信号解析 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!