# Shifting Sequences Using MATLAB

I'm reading this book and I came across a function to shift sequences. Mathematically,

$$y(n) = \{x(n-k) \}$$

if $m = n-k$, then $$y(m+k) = \{ x(m) \}$$

function [y,n] = sigshift(x,m,k)
n = m + k;
y = x;
end


This function shifts nothing. I've tried to find errata list of the book, but I couldn't find it. Is this function correct?

This function just changes the x-axis for plotting signals. It's indeed pretty trivial but the idea is to use it like this:

n = 0:4;
x = [1 2 3 2 1];           % some signal
[y,m] = sigshift(x,n,3);   % shift to the right by 3 samples
subplot(2,1,1), stem(n,x)
subplot(2,1,2), stem(m,y)


In order to shift in MATLAB you need to play with the indices of the signal vector. for example, given vector x - vX of length L, to shift it in time such that the first sample is the fifth you'll do this:

vXShifted = x(5:L);


Pay attention that the signal is shorter by 4 samples.

Now, sometimes, for periodic signals, a cyclic shifting is required which can be done using circshift.