信号相移

Phase shift in a signal

这就是我写代码的方式

fc = 10;
td = 5000;
fs = 3*fc;
ts = 1/fs;
t = 0:ts:1-ts;
a = 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));

这是我得到的结果。然而,具有相移的信号与没有相移的信号相同。

如果你想添加相移,你只需要做:

a = cos(2*pi*fc*t + S);

其中 S 是位移(以弧度为单位)。
此外,如果您仍想绘制 ifft(p1),则不应使用 abs(p2),而应使用 real(p2)
希望对您有所帮助

乘以exp(-1i*2*pi*p*td)可以在FT域中增加一个延迟,没错

但是fft默认不居中(使用fftshift),DC在索引1处。所以p不对,试试p = 0:fs/nfft:1-fs/nfft;相反。

编辑: 似乎不完全清楚。如果您使用 p = 0:fs/nfft:1-fs/nfft;,请不要使用 fftshift。如果要使用fftshift,p必须是-1/2+fs/nfft:fs/nfft:1/2.