【发布时间】:2021-05-25 00:20:43
【问题描述】:
我尝试从 Matlab 中的 fft 函数结果中提取幅度和相位值。我实现了如下脚本
clear;
sf = 100; %sampling frequency
si = 1/sf; dt=si; %time sampling interval
L = 10; %Length of signal
t = linspace(0,L,L/dt+1);%(0:L-1)*dt; %time vector
t(end)=[];
fr = 4 %frequency
data = cos(2*pi*fr*t);
df = sf/length(data3); %frequency increment
f = linspace(0,length(data3)/2,length(data3)/2)*df; %frequency
fft_result =fft(data)/length(data);
spec_fft = abs(fft_result); %amplitude
pha_fft = angle(fft_result); %phase
当我检查幅度和相位值的结果时,当然,它们在我指定的特定频率处显示峰值。但是,其他频率也有幅度。当然,它们的值非常非常小,但是因为这个问题,相位谱并没有给我一个清晰的结果。为什么其他频率也有幅度值?
我做了一个没有移位的余弦函数。所以我认为相位值应该显示零值,但事实并非如此。为什么会出现这个问题?
【问题讨论】:
标签: matlab fft phase amplitude