Shifting a signal to the right or left

103 vues (au cours des 30 derniers jours)
SSG_newbiecoder
SSG_newbiecoder le 1 Fév 2018
How can I shift a signal to the left or right? Is there any inbuilt command for it?
  6 commentaires
mathematics
mathematics le 15 Sep 2019
Could you please explain how to use this code?
Thank you
Sk Group
Sk Group le 24 Jan 2021
https://www.swebllc.com/signal-shift-function-in-matlab/

Connectez-vous pour commenter.

Réponses (6)

Jos (10584)
Jos (10584) le 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

SSG_newbiecoder
SSG_newbiecoder le 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)
Jos (10584) le 1 Fév 2018
x = 1:10
k = 3
xs = circshift(x,k)

Manoj Kumar Koduru
Manoj Kumar Koduru le 23 Nov 2020
clc;
close all;
L=input ('Enter the no.: ');
n=-L:L;
y=[zeros(1,L),1,zeros(1,L)];
if n >0
y(L+1:end) = n(1:end-L);
elseif n <0
y(1:end+L) = n(-L+1:end);
end
y
plot(n,y);
  1 commentaire
Shukumar Pattnaik
Shukumar Pattnaik le 10 Fév 2021
sir what is the use of line 5 ??

Connectez-vous pour commenter.


Sk Group
Sk Group le 8 Fév 2021
MATLAB CODE:
function [n1,x1] = sigshift(x,n,k)
n = 1:10;
k = 2;
x = exp(n);
if k>0
disp(‘Positive’);
n1 = n(1):n(end)+k;
x1 = [zeros(1,k) x];
else
disp(‘Negative’);
n1 = n(1)+k:n(end);
x1 = [x zeros(1,abs(k))]; % abs is for absolute value of (k) because quantity can never be (-ve) negative %
end

Sk Group
Sk Group le 8 Fév 2021
MATLAB CODE:
function [n1,x1] = sigshift(x,n,k)
n = 1:10;
k = 2;
x = exp(n);
if k>0
disp(‘Positive’);
n1 = n(1):n(end)+k;
x1 = [zeros(1,k) x];
else
disp(‘Negative’);
n1 = n(1)+k:n(end);
x1 = [x zeros(1,abs(k))]; % abs is for absolute value of (k) because quantity can never be (-ve) negative %
end
MATLAB CODE:
function [y n1] = sigfold(x,n)
n1 = -fliplr(n)
y = fliplr(x)
end

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by