我用matlab仿真式(6.79),式中a0,k直接取书上算出来的系数,即[0.006,-0.056,2.347,3.192,2.009,-0.663]; φ (t)则直接由书上的滤波器系数求得,结果仿真的结果跟书上相差甚远,百思不解。
仿真结果与书上结果比较:
我的结果
书上的结果
现将源码公布如下:
clear
clc
tic
t=-3:0.001:3;
a0=[0.006,-0.056,2.347,3.192,2.009,-0.663];
h4=[1+sqrt(3),3+sqrt(3),3-sqrt(3),1-sqrt(3)]/(4*sqrt(2));
jinsi = zeros(1,length(t));
for k=-4:1
jinsi = jinsi + a0(k+5)*phnt(t-k,h4,5); %phnt是我另写的函数,递归求daubechies尺度函数的5阶逼近
end
hold on;PlotAxisAtOrigin(t,jinsi);
toc
function [ output ] = phnt( t,h,n )
% t:时间范围
% n:迭代次数
% h:尺度滤波器系数
output = zeros(1,length(t));
if(n==1)
for k=1:length(h)
output = output + h(k)*B0(2*t-k); %B0(t)是box function
end
output = output*sqrt(2);
return;
end
for k=0:length(h)-1
output = output + h(k+1)*phnt(2*t-k,h,n-1);
end
output = output*sqrt(2);
end
function [ output ] = B0( t )
output = heaviside(t) - heaviside(t-1);
end