?使用 fs 進行采樣,進行 N點FFT ?選擇顯示0~N/2+1點的幅值 ?橫坐標對應頻率計算公式:? ?fs * n / N |
舉個梨子: ????????頻率2kHz采樣1s,得到2000個點的序列y(n) ? ? ? ? 對序列y(n)做4096點的FFT ? ? ? ? 幅值響應對應的橫坐標頻率計算:? 2kHz * n / 4096 |
clc;
clear;
close all ;T = 0.0005;%周期;x軸的步長
Fs = 1/T; %頻率%待采樣函數
x = 0:T:1-T;
y = 5*sin(2*pi*50*x) + 7*sin(2*pi*120*x) + 2*sin(2*pi*160*x) + 10*sin(2*pi*500*x);subplot(3,1,1);plot(x,y);
title("x,y");L = 4096;
Y = fft(y,L); % L點 FFT 不足L點會自動補零
P2 = abs(Y/L); % Y 為傅里葉變換得到的結果 L為Y的長度subplot(3,1,2);plot(0:L-1,P2);
title("4096點FFT");P1 = 2* P2(1:L/2+1); % 取前一半+1 個元素 , 對稱疊加f = Fs*(0:(L/2))/L;
subplot(3,1,3);plot(f,P1) ;
title("fft");xlabel('Hz');ylabel('振幅');
y = 5*sin(2*pi*50*x) + 7*sin(2*pi*120*x) + 2*sin(2*pi*160*x) + 10*sin(2*pi*500*x); |
第三幅圖可以看出橫軸X對應的幾個峰值與被測信號相近 根據奈奎斯特采樣定律,采樣信號至少為被采樣信號的兩倍 fs=2000Hz 被采樣信號最高為1000Hz |
第三幅圖的幅值幾乎為被采樣信號的一半: |
Matlab 計算 FFT 的方法及幅值問題_matlab取幅值的函數-CSDN博客 |
|
幅值與FFT點數也存在關系,太多點數會存在能量泄露。 |