MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by vaishali passi
on 27 Jun 2013

My project is based on audio watermarking with time spread echo method. For this I have generated PN sequence and for encoding the following formula is applied h(n)= d(n)+ alpha*p(n-delta)

where d(n)= dirac delta function, alpha= amplitude of PN sequence, p(n)= PN sequence, delta= time delay.

here I know that p(n) is an array of PN sequence. I have done the coding for dirac delta function and also generated PN sequence but i am unable to write code for p(n-delta) as mentioned in above formula. I tried the following code: delta=0.001; for x=1:1023 temporary = PN1(1,x); new_index =(x-delta); PN1(1,new_index) = temporary; end disp(PN1); f=alpha*(PN1-delta);

but by this i always get the error mentioning that 'Attempted to access PN1(1,0.999); index must be a positive integer or logical'.

So i request to plz help me out to do time shifting in PN sequence. Plz provide code of the above mentioned formula.

*No products are associated with this question.*

Answer by Muthu Annamalai
on 27 Jun 2013

Accepted answer

If you understand that *p(n-k)* in DSP terms is nothing but the same signal *p* but time-shifted by the amount *k* then it resolves everything here.

Also I think you want the *kronecker delta* in a discrete system.
You will have to prefix your array PN by zeros, and use the index, so that MATLAB will not complain about out of bounds. Also avoiding dirac delta, i.e. use an IF condition to set the index offset to 0 or 1, should eliminate your error 'Index must be logical'.

HTH

vaishali passi
on 27 Jun 2013

thanks for the answer but can u plz help me out with some code if possible

## 1 Comment

## vaishali passi

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/80492#comment_157491

m not able to shift PN sequence by delta; so plz help me .........