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

该文介绍了如何利用Matlab进行FFT变换来分析时域信号的频谱。通过设置采样频率fs为128Hz,采样深度N为128,生成一个包含正弦波的时域信号,并进行FFT处理。文章详细展示了fftshift函数的应用,将频谱图的右半部分移动到左半部分,以便于观察。同时提出了关于采样频率和采样深度选择的问题。
摘要由CSDN通过智能技术生成

目录

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和采样深度如何选择?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归海一刀#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值