我在 dsp.stackexchange 上发布了这个问题,并被告知它与 stackoverflow 更相关,因为它主要是一个编程问题:
我正在尝试编写一个代码,它允许我在频域中改变信号的相位。但是,我的输出并不完全正确,所以一定有问题。举一个简单的例子,假设我们有函数 y = sin(2*pi*t) 并且想要实现 -pi/2 的相移。我的代码如下所示:
clear all
close all
N = 64; %number of samples
fs = 10; %sampling frequency
ts = 1/fs; %sample interval
tmax = (N-1)*ts;
t = 0:ts:tmax;
y = sin(2*pi*t);
figure
plot(t,y)
% We do the FT
f = -fs/2:fs/(N-1):fs/2;
Y = fftshift(fft(y));
% Magnitude spectrum
figure
plot(f,abs(Y));
phase = angle(Y);
% Phase spectrum
figure
plot(f,phase)
Y = ifftshift(Y)
% Attempt at phase shift
Y = Y.*exp(-i*2*pi*f*pi/2);
% Inverse FT
u = ifft(Y);
figure
plot(t,real(u))
除了看起来如下的最终图之外,所有图看起来都不错:
这看起来几乎是正确的,但并不完全正确。如果有人可以给我一些关于如何更正我的代码以解决此问题的指示,我将不胜感激!我感觉我的错误与线路有关Y = Y.*exp(-i*2*pi*f*pi/2);
,但我不知道如何解决它。