📄 wpsynthesis.sci
字号:
function x = WPSynthesis(basis,pkt,qmf)
// WPSynthesis -- Synthesize signal from wavelet packet coefficients
// Usage
// x = WPSynthesis(btree,wp,qmf)
// Inputs
// btree basis tree indicating wavelet packet to use
// wp wavelet packet table
// qmf quadrature mirror filter
// Outputs
// x 1-d signal whose wavelet packet coefft's in
// basis btree are in wp
//
// Examples
// [n,D] = dyadlength(signal);
// qmf = MakeONFilter('Haar');
// wp = WPAnalysis(signal,D,qmf);
// stree = CalcStatTree(wp,'Entropy');
// [btree,vtree] = BestBasis(stree,D);
// signal2 = WPSynthesis(btree,wp,qmf); % signal == signal2
//
// Copyright Aldo I Maalouf
[n,L] = size(pkt);
wp = pkt;
//
// initialize tree traversal stack
%//
stack = zeros(3,2^L);
k = 1;
stack(:,k) = [0 0 0 ]';
//
while(k > 0),
d = stack(1,k); b = stack(2,k); marked = stack(3,k); k=k-1;
if(basis(node(d,b)) ~= 0) , // nonterminal node
if(marked == 0),
k = k+1; stack(:,k) = [d b 1]';
k = k+1; stack(:,k) = [(d+1) (2*b) 0]';
k = k+1; stack(:,k) = [(d+1) (2*b+1) 0]';
else
lson = rem(b,2);
lpchan = wp(packet(d+1,2*b+lson ,n),d+2)';
hpchan = wp(packet(d+1,2*b+(1-lson),n),d+2)';
s = UpDyadHi(hpchan,qmf) + UpDyadLo(lpchan,qmf);
wp(packet(d,b,n),d+1) = s';
end
end
end
x = wp(:,1)';
endfunction
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -