我张贴在dsp.stackexchange这个问题,并得知它是计算器更加相关,因为它主要是一个编程问题:变化阶段(matlab程序)
我试图写一个代码,它允许我改变频域信号的相位。但是,我的输出不完全正确,所以一定是错误的。举一个简单的例子,假设我们有函数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))
所有地块看,除了最后的情节看起来如下OK:
这看起来几乎是正确的,但不完全是。如果任何人都可以给我一些关于如何修正我的代码以解决此问题的指示,我将不胜感激!我有一种感觉,我的错误与Y = Y.*exp(-i*2*pi*f*pi/2);
行有关,但我不知道如何解决它。
感谢!这真的很有帮助! – Kristian 2014-09-21 21:36:06