先放fft代码
% x是信号数据
x = importdata('low.xlsx');
% 计算FFT
N = length(x); % 采样点数
Fs = 500; % 采样频率
n = N;%fft点数
x = fft(x,n); % 计算FFT
mo = mod(n,2);
if mo == 1
amp = 2*abs(x(1:(n+1)/2)); % 幅度
% 计算频率轴
f = (0:n/2) *Fs / N; % 频率轴
end
if mo == 0
amp = 2*abs(x(1:n/2)); % 幅度
% 计算频率轴
f = (0:n/2-1) *Fs / N; % 频率轴
end
% 绘制幅频响应
plot(f, amp);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Amplitude Frequency Response');
fft的过程
- 时域采样:采样频率Fs(每秒钟采多少个点)。
- 时域截断:采样点数N(一共采了多少个点)。
- 频域采样:为了达到整周期延拓,频域采样的采样间隔Δω=Fs/N(频域分辨率)。
- fft代码中的参数n一般可以取成时域采样点数N,如果不是N则需要另外的换算。
- 幅度计算时需要abs并乘2,因为要把正负频率放到一起。