Matlab中使用FFT函数

本篇为《信号处理》系列博客的第五篇,该系列博客主要记录信号处理相关知识的学习过程和自己的理解,方便以后查阅。

文章原地址:《基于MATLAB的FFT分析

基于MATLAB的FFT函数需要了解的知识点

  1. 频谱关于中间位置对称,只需要观察 $ 0:1:N/2 ( 这 (这 N/2+1 个 点 ) ( 时 域 采 集 N 个 点 , 频 域 只 需 要 观 察 个点)(时域采集N个点,频域只需要观察 NN/2+1$个点)
  2. MATLAB中FFT的频谱,应该看幅值
  3. X轴频率点的设置:采样频率为Fs,频谱图显示的最高频率为Fs/2(采样定理):X轴频率点: ( 0 : 1 : N / 2 ) ∗ F s / N (0:1:N/2)*Fs/N 0:1N/2Fs/N
  4. 复数幅值修正在这里插入图片描述

需要说明的两个问题

  1. 画出的频谱图的频率分辨率为Fs/N
  2. 采样频率Fs大于信号最大频率的的2倍

原文作者心得

  1. 由于采样定理可知,当不满足采样定理的时候将出现混叠现象,所以FFT处理时默认Fs/2为最高信号频率
  2. 假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。

待解决的问题

从数学层面理解FFT变换后的幅值的大小问题(心得第二点)

MATLAB代码

%%%傅里叶变换的例子%%%
clear all
close all
clc

% Parameter Interface
SampleFre = 1000;%采样频率
SignalLen = 20000;%数据长度

% Main
%--------------------------------------------------------------------------------------
t = (0:SignalLen-1)/SampleFre;%时间

SignalData = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);%采样频率>2倍信号最大频率
NoiseData = 2*randn(size(t));
SignalAddNoiseData = SignalData + NoiseData;
plot(1000*t(1:50),SignalAddNoiseData(1:50))
title('信号添加随机噪声')
xlabel('t(毫秒)')

%--------------------------------------------------------------------------------------
FFTData = fft(SignalAddNoiseData);

FFTAmplitude0 = abs(FFTData)/SignalLen;
FFTAmplitude1 = FFTAmplitude0(1:SignalLen/2);%频谱关于SignalLen/2对称

FFTAmplitude0(2:end) = 2*FFTAmplitude0(2:end); %复数域的幅值需要进行变换才能与时域的幅值对应
FFTAmplitude1(2:end) = 2*FFTAmplitude1(2:end);

Frequence0 = SampleFre*(0:(SignalLen-1))/SignalLen;
Frequence1 = SampleFre*((0:(SignalLen/2)-1))/SignalLen;

subplot(2,1,1)
plot(Frequence0,FFTAmplitude0)
title('双边频谱')
xlabel('f(Hz)')
ylabel('FFTAmplitude')

subplot(2,1,2)
plot(Frequence1,FFTAmplitude1)
title('单边频谱')
xlabel('f(Hz)')
ylabel('FFTAmplitude')
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值