필터 지우기
필터 지우기

Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Does the wavelet toolbox have a function to extract the approximation filter kernels for a specified level?

조회 수: 1 (최근 30일)
I would like to have the filter kernel for say, the level 6 approximation (A6) so that I can perform convolution filtering of some signal in another application, like Excel. Is there a function in the wavelet tool box that will give me the kernel directly?
If I use the code below with a 315 sample raw signal Raw, the vector scaleA2 should be the kernel for the level 2 approximation.
load sym4;
[Ld Hd Lr Hr]=orthfilt(sym4);
scaleA2=conv(conv(conv(Ld,dyadup(Ld,0)),dyadup(Lr,0)),Lr);
scaleA2=scaleA2/norm(scaleA2)/2;
When I convolve it with the raw signal using
fltr=wkeep(conv(Raw,scaleA2),315);
and compare fltr to A2 produced from
[C,L]=wavedec(Raw,5,'sym4');
A2=wrcoef('a',C,L,'sym4',2);
The two are close, but different. What's up???
  댓글 수: 1
Wayne King
Wayne King 2013년 3월 1일
Will you say "filter kernel" here, I assume you mean the filter impulse response. So you given an FIR scaling filter, h(n), you would like to know how to obtain the scaling filter at a specified level. Is that correct?

답변 (1개)

Wayne King
Wayne King 2013년 3월 2일
I'm not sure why you are trying to use the synthesis filter here. That does not give you the equivalent filter for the scaling or wavelet filter at a given level of resolution.
The synthesis filter is used for aliasing cancellation and ultimately yields a vector projection onto a particular subspace.
You can get the equivalent filter you want this way:
[h,~] = wfilters('sym4');
L = 6;
%%Using the multirate noble identities
tmp = h;
for k = 1:L-1
tmp = dyadup(tmp,0);
h = conv(h,tmp);
h = 1/sqrt(2)*h;
end
%%Look at the frequency response
% Compare the frequency response of the scaling filter and
% the equivalent frequency response at level 6.
[LoD,~] = wfilters('sym4');
Horig = fft(LoD,1024);
Horig = Horig(1:1024/2+1);
Hfinal = fft(h,1024);
Hfinal = Hfinal(1:1024/2+1);
W = 0:(2*pi)/1024:pi;
plot(W,abs(Horig),'r','linewidth',2);
hold on;
plot(W,abs(Hfinal))
legend('Scaling filter','Equivalent filter at level 6');
set(gca,'xtick',[pi/2^L pi/2 pi]);
xlabel('Radians/sample');
grid on;
% Zoom in on the frequency response of the level-6 equivalent filter
figure;
plot(W,abs(Hfinal))
set(gca,'xlim',[0 pi/2^(L-2)]);
set(gca,'xtick',[pi/2^L pi/2^(L-1)])
xlabel('Radians/sample');
grid on;
title('Equivalent Scaling Filter at Level 6');

이 질문은 마감되었습니다.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by