Re: Delay Filter with Fractionary delay
aenima1891 schrieb:
hello,
the impulse response of a delaye filtered signal is:
y(t)=conv(x(t-tau),h(t)) (1)
So its Fourier Transform is
Y(f)=X(f)*exp(-j*2*pi*tau*f)*H(f) (2)
So the delay leads to a multiplication in the frequency domain with a
complex phase term and it doesn't matter if you delay the filtered
version or the original version since the order of multiplication is
exchangable. But I am wondering why you want to upsample the signal at
all, when you downsample it after the IFFT? There would be only a gain
in upsampling if you would observe the upsampled filtered delayed signal
in the time domain? You would have to upsample if you perform all
operations in the time domain...
So i would just do the following:
a) H(f)=fft(h,N);
b) Apply equation two
c) y(t)=ifft(Y,N*upsampling_factor)
Hope to help,
Sebastian
> hallo to anyone.
> i'm trying to apply a delay filter to an input signal.
> I'd like that this delay is implemented with an upsampling, because i'm
> talking about a fractionary delay.
> Is it possible to only upsample the filter impulsive response and not the
> whole input signal?
>
> this is my Matlab Code
>
> fc=100; %sample frequency of input signal
> t=0:2*pi/(fc-1):2*pi;
> x=sin(t); %input signal
> subplot(121);
> stem(t,x);
> title('Original Signal');
> n_points=length(x);
>
>
> tau=3.45; %delay (samples)
> up_factor=10; %upsampling factor
> tau_up=round(tau*up_factor);
> NFFT=2^nextpow2(n_points*up_factor);
>
> %------ anti imaging filter---------%
> h_imaging=up_factor*fir1(32,1/up_factor,blackman(32+1));
> H_IMAGING=fft(h_imaging,NFFT);
>
> h_delay=[zeros(1,tau_up) 1];
> H_DELAY = fft(h_delay,NFFT);
> X = fft(x,NFFT);
> OUT1 = H_DELAY.*X.*H_IMAGING;
> out1=real(ifft(OUT1,NFFT));
> out=downsample(out1,up_factor);
> subplot(122);
> stem(t,out(1:n_points));
> title('Signal with delay');
>
>
> Sorry for my bad english
|