## Shifting a signal to the right or left

### SSG_newbiecoder (view profile)

on 1 Feb 2018
Latest activity Answered by Jos (10584)

### Jos (10584) (view profile)

on 20 Sep 2019
How can I shift a signal to the left or right? Is there any inbuilt command for it?

Jos (10584)

### Jos (10584) (view profile)

on 6 Feb 2018
maybe you should give an example of the input and expected output?
SSG_newbiecoder

### SSG_newbiecoder (view profile)

on 6 Feb 2018
The below code works well so problem solved. :)
s = zeros(size(x));
if shift >0
s(shift+1:end) = x(1:end-shift);
elseif shift <0
s(1:end+shift) = x(-shift+1:end);
end
mathematics

### mathematics (view profile)

on 15 Sep 2019
Could you please explain how to use this code?
Thank you

### SSG_newbiecoder (view profile)

on 20 Sep 2019

I'll try to explain with an example.
Let X={1 2 3 4 5} be our sequence. s = zeros(size(X))
s={0 0 0 0 0}
Right shift
If we want to shift this function to the right by three points,
shift=3 i.e, shift>0
s(shift+1:end) = x(1:end-shift)
ie, s(4,5)=X(1,2)
so shifted output will be s={0 0 0 1 2}
Left shift
If we want to shift this function to the left by three points,
shift=-3 i.e, shift<0
s(1:end+shift) = x(-shift+1:end)
ie, s(1,2)=X(4,5)
so shifted output will be s={4 5 0 0 0}
Hope this makes sense. Please note that this is not the circular shift and we have inbuilt code for circular shift.

### Jos (10584) (view profile)

on 20 Sep 2019

x = 1:5
shift = 3
x = circshift(x,shift)
N = numel(x)
ix = (1:N) - shift
tf = ix < 1 | ix > N
x(tf) = 0