FFT 简单基础(matlab

 使用 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取幅值的函数-优快云博客

幅值与FFT点数也存在关系,太多点数会存在能量泄露。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值