傅里叶变换的时移性质
信号增加线性相位时,是所有的频率分量对应的相位都有变化。
matlab代码
%--------------------------------------------------------------------------
% 清空一切
clc;clear all;close all;
%--------------------------------------------------------------------------
% 参数设置
FS = 3000;
TS = 1/FS;
N = 16384;
f = 300;
t = (0:N-1)*TS;
K = 50;
%--------------------------------------------------------------------------
% 生成信号
sig = exp(1i*2*pi*f*t);
% sig = exp(1i*2*pi*(f*t+K*t.^2));
%--------------------------------------------------------------------------
% 频域分析
freq = (0:N-1)/N*FS;
y = fft(sig);
y(find(abs(y)<max(abs(y))*0.1))=0;
amp = abs(y);
pse = unwrap(angle(y));
figure;
plot(freq,amp);
title('幅度谱');
figure;
plot(freq,pse);
title('相位谱');
%--------------------------------------------------------------------------
% 时域延迟处理
delay = 5;
sig_d = [zeros(1,delay) sig(1,1:end-delay)];
pse_0 = angle(sig);
pse_1 = angle(sig_d);
pse_fenxi_TD = [pse_0;pse_1]';
%--------------------------------------------------------------------------
% 频域移相处理(错误方式)
sig_d = ifft(fft(sig).*exp(-1i*2*pi*f*TS*delay));
pse_0 = angle(sig);
pse_1 = angle(sig_d);
pse_fenxi_FD_wrong = [pse_0;pse_1]';
% 频域移相处理(正确方式)
sig_d = ifft(fft(sig).*exp(-1i*2*pi*(0:N-1)/N*delay));
pse_0 = angle(sig);
pse_1 = angle(sig_d);
pse_fenxi_FD_right = [pse_0;pse_1]';
单点频信号
当使用单点频信号时,使用ifft(fft(sig).exp(-1i2pifTSdelay))方式在频域移相处理,处理后对应的pse_fenxi_FD_wrong结果如下所示,这里的移相处理其实是错误的,但因为是单点频信号,看不出来
线调信号
当使用线调信号时,可以看出比较明显的看出,使用ifft(fft(sig).exp(-1i2pi(0:N-1)/Ndelay))方式在频域移相处理的结果和时域直接进行延迟处理的效果是等效的,使用ifft(fft(sig).exp(-1i2pifTS*delay))方式在频域移相处理的结果是错误的
时域相位、频域相位
时域中的相位,和频域中的相位不是一回事。频域中的相位是指各谐波的相位,它随频率而变化。时域信号中看不出频率,对应的时域相位是各谐波叠加后的信号的相位值。时域相位和频域相位并没有固定的公式来计算二者的关系。