ウェーブレットパラメータの離散化


(a,b)→(j,k)に変換する

パラメータjを解像度と呼ぶ

三角波の場合

clear; close all;

x = 0:0.05:5;

j = 0;
k = 0;
y = mother_wavelet(x,j,k);
plot(x,y,'DisplayName',sprintf('j=%d,k=%d',j,k));
hold on;

j = 2;
k = 1;
y = mother_wavelet(x,j,k);
plot(x,y,'DisplayName',sprintf('j=%d,k=%d',j,k));


j = -1;
k = 1;
y = mother_wavelet(x,j,k);
plot(x,y,'DisplayName',sprintf('j=%d,k=%d',j,k));


legend();
title('Effect of parameter (j,k)');

big;

function y=mother_wavelet(x,j,k)
y = zeros(length(x),1)';
slice = (2^j*x-k)>0 & (2^j*x-k)<=0.25;
t = x(slice);
y(slice) = 2^(j/2)*2*(2^j*t-k);
slice = (2^j*x-k)>0.25 & (2^j*x-k)<=0.75;
t = x(slice);
y(slice) = 2^(j/2)*(-2*(2^j*t-k)+1);
slice = (2^j*x-k)>0.75 & (2^j*x-k)<=1;
t = x(slice);
y(slice) = 2^(j/2)*(2*(2^j*t-k)-2);
end


SINC関数の場合

jを大きくすると周波数が上がり、波のピークも上がる

clear; close all;

x = -5:0.049:5;
k = 0;

js = [-3,-1,0,1,3];
hold on;
for idx = 1:length(js)
    j = js(idx);
    y = mother_wavelet(x,j,k);
    plot(x,y,'DisplayName',sprintf('j=%d',j));
end

legend();
title('Effect of parameter j');
big;

function y=mother_wavelet(x,j,k)
t = 2^j*x-k;
y = 2^(j/2)*sin(t)./(t);
end