【发布时间】:2014-09-21 20:35:43
【问题描述】:
我在 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); 行有关,但我不确定如何解决。
【问题讨论】:
标签: matlab filter signal-processing phase