DSPRelated.com
Forums

convolution with time-varying offset

Started by Elnaz February 11, 2014
Hi all, 

I want to implement a convolution with timing offset in Matlab. My continuous signal equation is:

r(t) = sum over k of (a(k)*h(t-k*T-k*0.1*T)), where a(k)'s are a stream of bits, h is the pulse shape, and T is the symbol period. 

My sampled h is [1 4 6 4 1]. 

Could you please guide me how to do this?

Thanks,
Elnaz
On Tue, 11 Feb 2014 15:12:31 -0800 (PST), Elnaz
<ebsadeghian@gmail.com> wrote:

>Hi all, > >I want to implement a convolution with timing offset in Matlab. My continuous signal equation is: > >r(t) = sum over k of (a(k)*h(t-k*T-k*0.1*T)), where a(k)'s are a stream of bits, h is the pulse shape, and T is the symbol period. > >My sampled h is [1 4 6 4 1]. > >Could you please guide me how to do this? > >Thanks, >Elnaz
Basically, take h=[1 4 6 4 1] and interpolate it up by a factor that will give you the resolution that you want on your time shift. For example if you interpolate it up by 1:2, then you can take all of the new interpolated samples and use those for h with a timing offset of T/2. so the original h = [c0 c1 c2 c3 c4] then gets interpolated up to h2 = [c0 c1 c2 c3 c4 c5 c6 c7 c8 c9] where, for example, [c0 c2 c4 c6 c8] from h2 form the original h. then h3 = [c1 c3 c5 c7 c9] replace the original h with an offset of T/2. c9 is probably not necessary in this example, but you should get the idea from the above. If you need more resolution on the timing offset than that, then you need to interpolate the original coefficient set by a higher factor and take the coefficients that give the delay that you want. For your case of 0.1T, you need to interpolate the h by a factor of 10. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Sampled h at what sampling rate?
I did implement this by writing the convolution myself and shifting the pulse shape "h" each time that I multiply it by a(k). 
Now, the problem is the simulation time. It's tooo long. Can we do this in another way? Perhaps, first convolving with no offset by using "conv" command and then applying the timing offset to the output? 

What is the efficient implementation for this?

Thanks,
Elnaz