频谱分析基础-01. FFT频谱绘制

目录

1.背景

2.程序及原理分析

3.FFT绘制

4.问题


1.背景

关于频谱分析主要学习的过程分别是FS, FT, DTFT, DFT, DFS, FFT。实际工程中都是数字域进行数据处理,因此基本上都是对采样后的数据进行FFT(DFT)操作。对于一个时域信号,总是不自觉的想知道其频谱是何面貌。本节基于Matlab工具软件,绘制出一个时域信号的频谱图。


2.程序及原理分析

clear all; clc; close all;

fs= 128;                         %信号最大频率30Hz,采样率128Hz.

N=128;                         %采样深度点数为128,频率分辨率为fs/N=1Hz

t=(0:N-1)/fs;                     %离散时间,采样间隔为1/fs

y=1+cos(2*pi*30*t);               %获取采样后的信号离散采样值

Y=fft(y,N)/N;                     %fft变换后,双边带乘以1/N,单边带2/N

freq=(0:N-1)*fs/N;                %根据fs和N,计算出序列中数据点对应的频率

freq1=((-N/2):N/2-1)*fs/N;        %数字域频谱关于fs呈现周期,将[fs/2 fs]搬移到[-fs/2 0]

Y1=fftshift(Y);                    %将FFT后的序列后半部分搬移到前面组成新序列

%作图

subplot (3,1,1)

stem(freq,abs(Y(1:N)),'k');

xlabel('频率(Hz)');ylabel('幅值');

set(gcf,'color','w');

subplot (3,1,2)

stem(freq1,abs(Y(1:N)),'k');

xlabel('频率(Hz)');ylabel('幅值');

set(gcf,'color','w');

subplot (3,1,3)

stem(freq1,abs(Y1(1:N)),'k');

xlabel('频率(Hz)');ylabel('幅值');

set(gcf,'color','w');


3.FFT绘制

图 1 采样后的波形y 

 图 2 Y=fft(y,N)/N;

图 3 Y1=fftshift(Y);

对Y进行fftshift()操作,就是把图1右半部分(序号65~128)放到左半部分前面(序号0~64),重新构成新的序列Y1。

备注:图1到图3过程中序列的横坐标没有量纲,仅仅是序列的序号。MATLAB中序列从1开始。

图 4标有频率刻度的频谱


4.问题

  关于采样频率fs和采样深度如何选择?