This MATLAB program is for making a suitable wavelet kernel

It derives the Low pass filter by sampling from analog raised cosine function in
frequency domain and taking ifft from this function to yield the impulse
response. (other filters are derived using orthogonal relations).

first i wnat know if the filter design method has any problems?

The filter has 2 parameters in frequency domain Fs and B. Fs is the number of
samples which will be the length of the filter and B which controls the
sharpness of the curve in frequency domain.

These filters have fairly large reconstruction error. even when the filter
length is large(Fs= 32 and B=.15)

When i take the fft of this filter with large number of fft points
(fft(tz,8000)) the result shows small ripples in stopband. I checked the same
for db filters and these filters didn't have these ripples.

i'm confused!!!

=======================================M-file

% program for making a suitable kernel for coder

clear all;

close all;

Fs; % sampling frequncy from analog filter T(f)

%B=.1505; % input parameter

B=.15;

r=1/2; % r (second parameter)

k=Fs/2;

for f=1:k+1 % sampling of analog filter in frequency domain

if (f-1)<=(r-B)*k

T(f)=1;

elseif (f-1)<=(r+B)*k

T(f)=cos(pi/(4*B)*((f-1)/k-r+B));

elseif (f-1)<=k

T(f)=0;

end;

end;

x=(0:k)/Fs;

plot (x,T);

for f=(k+2):Fs % making second half of samples

T(f)=T(Fs+2-f);

end;

T1=real(ifft(T)); % original FIR filter

for i=1:k % TL is casual filter

TL(i+k)=T1(i);

end;

for i=1:k

TL(i)=T1(k+i);

end;

tx=TL;

%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%

[y,fs]=wavread('taha.wav'); % getting input signal(16KHz wav file)

plot(y);

title('Original');

input=y';

%--

for i=1:length(tx) % reporting samples of filter (kernel)

A(i)=fprintf('%.16f ',tx(i));

end;

[Lod, Hid, Lor, Hir]=orthfilt(tx); %making other filters

ql=filterx1(input,Lod); %analyse of input input signal

qh=filterx1(input,Hid);

qld=d_convrt(ql); %down converting

qhd=d_convrt(qh);

qldu=u_convrt(qld); %up converting

qhdu=u_convrt(qhd);

outl=filterx1(qldu,Lor); % synthesis filtering

outh=filterx1(qhdu,Hir);

final_out=outl+outh; % summing output of synthesis filters

hold;

%plot(final_out,'G');

plot(final_out(Fs:Fs-1+length(input)),'g'); % report summary

title('reconstructed & Original Signal');

%pause;

figure;

plot(final_out(Fs:Fs-1+length(input))-input,'g');

title('Error');

yE=final_out(Fs:Fs-1+length(input))-input;

L=length(yE);

E=sqrt(1/L*sum(yE.^2))