我正在尝试在 MATLAB 中创建真实信号,例如正弦波或正弦扫描。由于我想深入研究离散傅里叶变换的理论,我试图通过为我的频率响应和频域中的相关相位响应定义一个向量来创建这些信号,以使用在时域中检索相应的信号一个1000点ifft
的MATLAB函数。问题是,我就是无法正确获得相位响应。
fa=16000;
n=1000;
t=(0:(n-1))/fa;
f=(0:(n-1))*fa/n;
%% sine
% frequency response
X=zeros(1,1000);
X(26)=1;
% Phase
ANG=exp(-1i*pi/2);
X=X.*ANG
X=[X(1:501) conj(fliplr(X(2:500)))];
figure;
plot(f,real(X));
x=ifft(X);
figure
stem(x);
%% Sweep
% amplitude
SWEEP_real=ones(1,1000);
%Phase
for n=1:1000
ANG=exp(-1i*(pi/2)/(1000-n));
n=n+1;
end
SWEEP=SWEEP_real*ANG;
sweep=ifft(SWEEP);
figure
stem(sweep)
对于正弦波,它以某种方式起作用,即使相位响应不正确。我知道这些相位响应应该是什么样子,但我无法重新创建它们。任何如何重新创建这些阶段响应的提示或建议将不胜感激。也许我没有正确地完成这项任务,我只是很困惑......