matlab - Phase shift in a signal -


this how writing code

fc = 10; td = 5000; fs = 3*fc; ts = 1/fs; t = 0:ts:1-ts; = cos(2*pi*fc*t); figure, plot(a); y = fftshift(fft(a)); nfft = length(y); p = 0:fs/nfft:1-fs/nfft; p1 = y.*exp(-1i*2*pi*p*td); p2 = ifft(ifftshift(p1)); figure, plot(abs(p2)); 

this result achieve. signal phase shift same signal without phaseshift.

enter image description here

enter image description here

you can add delay in ft domain multiplying exp(-1i*2*pi*p*td), it's right.

but fft not centered default (use fftshift that), dc @ index 1. p not right, try p = 0:fs/nfft:1-fs/nfft; instead.

edit: seems not clear. if use p = 0:fs/nfft:1-fs/nfft;, don't use fftshift. if want use fftshift, p must -1/2+fs/nfft:fs/nfft:1/2.


Comments

Popular posts from this blog

yii2 - Yii 2 Running a Cron in the basic template -

asp.net - 'System.Web.HttpContext' does not contain a definition for 'GetOwinContext' Mystery -

mercurial graft feature, can it copy? -