短时傅里叶变换原理及其MATLAB实现(Short Time Fourier Transform,STFT)

1.短时Fourier变换原理(STFT原理)

信号x(t)短时Fourier变换定义为:

其中w(τ)为窗函数。

X(ω,t)中的时间t表示窗函数w(τ−t)的位置,随着窗函数在整个区间上的滑动,可获得信号x(τ)在 t 附近区域上对应的频谱。

信号短时Fourier变换是一种常用的信号时频分析方法。

2.DFT中的STFT原理

信号x(t)的STFT是一个积分运算,在实际计算中也可通过DFT来实现,即

其中:窗函数w[k]的宽度为N,x[k]为连续信号x(t)的抽样。

若抽样频率为fs,则存在 t=kT, T=1/fs。

3.时间分辨率和频谱分辨率
(2)时间分辨率
时间分辨率由时窗宽度Tp决定,公式为

Tp越小,时间分辨率越高。

(2)频谱分辨率
频谱分辨率是指分辩信号中相邻谱峰的能力,公式为

∆fc越小,频谱分辨率越高。

4.不足
信号的STFT虽然能在一定程度上改善Fourier变换的不足,实现信号的时频分析,但其时间分辨率固定不变,因而不能有效地反映信号的突变程度,其应用受到局限

小波分析拓展了信号STFT,实现了一种新的时频分析方法,其时窗可以随着信号的频率增高而缩小,频率降低而增大,有效地解决信号短时Fourier变换的缺陷,因而得到广泛应用

5.Matlab代码实现

clear;
clc;Fs=1e4;t=0:1/Fs:4;
t1=0:1/Fs:1;%10Hz的信号
x1=[sin(2*pi*10*t1)';zeros(Fs*3,1)];
%1000Hz的信号
x2=[zeros(Fs,1);sin(2*pi*1000*t1)';zeros(Fs*2,1)];
%2000Hz的信号
x3=[zeros(Fs*2,1);sin(2*pi*2000*t1)';zeros(Fs,1)];
%3000Hz的信号
x4=[zeros(Fs*3,1);sin(2*pi*3000*t1)'];
figure(1);
subplot(411);
plot(t,x1);
subplot(412);
plot(t,x2);
subplot(413);
plot(t,x3);
subplot(414);
plot(t,x4);x=x1+x2+x3+x4;
figure(2);
subplot(211);
plot(t,x);
title('时域图');
axis([0 4 -2 2]);%FFT代码
X=fft(x);
N=length(x);
f=(1:N/2)*Fs/N;
subplot(212);
plot(f,abs(X(1:N/2)));
xlabel('f (Hz)');
ylabel('|X(f)|');
title('频谱图');  %STFT关键代码
figure(3);
spectrogram(x,128,120,128,Fs,'yaxis');
title('时频图');

短时傅里叶变换原理及其MATLAB实现(Short Time Fourier Transform,STFT)相关推荐

  1. matlab 时频分析(短时傅里叶变换、STFT)

    短时傅里叶变换,short-time fourier transformation,有时也叫加窗傅里叶变换,时间窗口使得信号只在某一小区间内有效,这就避免了传统的傅里叶变换在时频局部表达能力上的不足, ...

  2. 短时傅里叶变换(STFT)及matlab

    笔记~自用版~ 短时傅里叶变换的基础理论 短时傅里叶变换(Short-Time Fourier Transform, STFT)是一种时频分析方法,它将信号在时间域上分成若干个短时段,对每个短时段进行 ...

  3. 傅里叶变换短时傅里叶变换小波变换

    一.傅里叶变换 关于傅里叶变换的基本概念在此我就不再赘述了,默认大家现在正处在理解了傅里叶但还没理解小波的道路上.(在第三节小波变换的地方我会再形象地讲一下傅里叶变换) 下面我们主要将傅里叶变换的不足 ...

  4. 【音频处理】短时傅里叶变换

    前言 上一篇博客讲了离散傅里叶变换,里面的实例是对整个信号进行计算,虽然理论上有N点傅里叶变换(本博客就不区分FFT和DFT了,因为它俩就是一个东东,只不过复杂度不同),但是我个人理解是这个N点是信号 ...

  5. 傅里叶变换、短时傅里叶变换、小波变换

    顺序:傅里叶-->短时傅里叶变换-->小波变换的顺序 转载自形象易懂的傅里叶变换.短时傅里叶变换和小波变换本文作者按照傅里叶-短时傅里叶变换-小波变换的顺序,由浅到深的解释小波变换的缘由以 ...

  6. matlab时频分析之短时傅里叶变换 spectrogram

    matlab时频分析之短时傅里叶变换 spectrogram 短时傅里叶变换常用于缓慢时变信号的频谱分析,可以观察沿时间变化的频谱信号. 其优点如下图所示,弥补了频谱分析中不能观察时间的缺点,也弥补了 ...

  7. 2021-05-10 Matlab短时傅里叶变换和小波变换的时频分析

    Matlab短时傅里叶变换和小波变换的时频分析 简介 本文主要给定一小段音频,通过短时傅里叶变换和小波变换制作时频图.音频的采样率为44100, 短时傅里叶变换 在matlab中,短时傅里叶变换的分析 ...

  8. 2021-02-28 Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图

    Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图 function [t,frequency,f_spectrum]=fft_s(y,windowlength,Fs) % 输入 : % ...

  9. MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法

    在Matlab中,做短时傅里叶变换需要使用函数spectrogram,而在Matlab2019中,引入了一个新的函数stft,下面我们就来看下这两个函数都如何使用. 短时傅里叶变换的基本原理就是将数据 ...

最新文章

  1. 国际化(1)---JS文件国际化
  2. 数据结构与算法系列 目录
  3. 三面百度AI岗,炸了
  4. 《Linux内核完全注释》《完全剖析》 » 阅读本书所需的基础知识 -- 再次强调。
  5. CCF NOI1080 统计字符
  6. 一看就懂的设计模式--设计模式分类
  7. jquery removeAttr删除属性,attr给属性赋值
  8. apicloud apploader 连接失败
  9. 利用opencv 做一个疲劳检测系统(2)
  10. Python爬虫:浅谈【破解某易云音乐加密-JS逆向】
  11. 微信网页授权本地调试
  12. PyTorch学习(九)--用CNN模型识别手写数字数据集MNIST
  13. sql 2005 用户 sa 登录失败
  14. ipad上面安装view
  15. 从零开始的运维之路【标题党】
  16. 软件测试的就业前景到底怎么样?
  17. SQL注入 基础概述及相关知识
  18. 上午写了一段代码,下午就被开除了。。。
  19. proteus7.7+Keil2仿真80C51控制流水灯
  20. html 验证码功能 不区分大小写进行验证。

热门文章

  1. 新闻传播专业的本科毕业论文,有哪些比较好的选题?
  2. Uedit32设置字体大小
  3. python虚函数_虚函数和纯虚函数的区别
  4. 嵌入式AI-K210篇-硬件-模型训练、部署
  5. sublime插件 —— 一键美化HTML/CSS/JS代码
  6. 在linux中安装浏览器吗,教你如何在 Linux 中安装 Microsoft Edge 浏览器
  7. 区块链DAPP开发 以太坊智能合约框架有哪些
  8. Java 中最简单打印数组的方式
  9. Linux安装mysql没有my.cnf文件
  10. modprobe 找不到文件