STFT笔记

article/2025/10/7 8:20:06

因为不懂这个被鄙视了,调包侠来补作业。

基础知识

FFT(fast fourier transfrom)快速傅里叶变换。
推荐阅读《深入浅出的讲解傅里叶变换(真正的通俗易懂)》,
《梅尔频率倒谱系数(MFCC)》。

频谱只获得了频域视角下,不同正弦波的幅度大小,而不包含相位信息,所以频谱又名振幅谱
距离频率轴最近的波峰,其到频率轴的时间差,除以周期,乘以2pi,即为相位差。人为定义相位谱的值域为(-pi,pi],因为相位差是周期的。
傅里叶级数,在时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。
傅里叶变换,是将一个时域非周期的连续信号,转换为一个在频域非周期的连续信号
快速傅里叶变换,将一维傅里叶变换的计算复杂度降解到O(N*logN)。当然也有二维、三维形式。

STFT就是以滑动窗口的形式,在不同窗口内部做FFT。
得到结果为spectrum,横坐标时间,纵坐标频率,数值大小表示能量深度。

调包侠不必过分追求底层原理,能活用api即可。

输入输出

看torch.stft官方文档

torch.stft(input, n_fft, hop_length=None, win_length=None, window=None, center=True, pad_mode=‘reflect’, normalized=False, onesided=True)

在这里插入图片描述

输入

可以是1D时间序列,shape=(L),也可以是 2D 的batch版本,shape=(batchsize,L)。

输出

(N,T,2),或者(batchsize,N,T,2)。
2表示实部和虚部的数值。

N is the number of frequencies where STFT is applied.
T is the total number of frames used。

文档里写的玄乎。我测试了之后发现。

N= n_fft//2 +1
T= (L-1)//hopsize + 1

其中hopsize默认为1/4的n_fft,。

以下为示例代码。

x=torch.randn(88200)
print(x.shape)
y=torch.stft(x,n_fft=2048)
print(y.shape)#输出
torch.Size([88200])
torch.Size([1025, 173, 2])
x=torch.randn(88200)
y=torch.stft(x,n_fft=1024)
print(y.shape)
#输出
torch.Size([513, 345, 2])

其他参数

hop_length,默认为floor(n_fft/4)。把hop理解为stride即可,每次滑动步长,或者称为帧移。
win_length,默认等于n_fft。自己指定值时,需满足win_length<=n_fft。其含义为每个窗口内取win_length个点做FFT,
又因为FFT需要输入的时间序列(帧点数)和输出的频域抽样点数(FFT点数)相同,即输入多长的信号,就做多少点FFT变换。
所以采样出来的win_length个点,需要用零填充至n_fft个。
window,shape=(n_fft,),一维张量。可以由torch.hann_window()等函数生成。其本质是一个加权求和操作里的“权重”。
同样地,当win_length<n_fft时,torch.hann_window生成的形状(win_length,),会被zero-padding到(n_fft,)。
pad_mode,默认为’reflect’,pad模式同 torch.nn.functional.pad() 。我写过一篇文章PyTorch F.pad()。
center
onsided
normalized

#参考 快速傅里叶变换(FFT)中为什么要“补零”?

时域补零相当于频域插值,让频域曲线看起来更加光滑,也就是增加了FFT的视觉分辨率。但不影响波形分辨率。

#参考https://ccrma.stanford.edu/~jos/mdft/Zero_Padding_Applications.html

文末一句话remember that in signal processing, zero-padding in one domain corresponds to a higher interpolation-density in the other domain–not a higher resolution。

#参考https://www.cnblogs.com/Ge-ronimo/p/12298403.html
#参考https://blog.csdn.net/sinat_35821976/article/details/105739909


http://chatgpt.dhexx.cn/article/6CqK85FS.shtml

相关文章

利用短时傅里叶变换(STFT)对信号进行时频谱分析和去噪声

利用短时傅里叶变换&#xff08;STFT&#xff09;对信号进行时频谱分析和去噪声 1、背景 傅里叶变换&#xff08;TF&#xff09;对频谱的描绘是“全局性”的&#xff0c;不能反映时间维度局部区域上的特征,人们虽然从傅立叶变换能清楚地看到一整段信号包含的每一个频率的分量值…

STFT(短时傅里叶变换)音频特征提取,用于语音识别 python

在各种音频相关的任务中&#xff0c;不管用什么模型或网络&#xff0c;得到所需的音频特征肯定是必要的一步。下面简单说一下STFT特征 一、原始信号 在说STFT之前&#xff0c;先说一下读入的原始信号&#xff0c;图像是在XY二维上描述的像素点的集合&#xff0c;相应的&#x…

STFT原理及MATLAB代码

原文地址&#xff1a;http://blog.csdn.net/shengzhadon/article/details/46811923 一、先说说STFT的理论 1.概念和特点 STFT&#xff08;short-time Fourier transform&#xff0c;短时傅里叶变换&#xff09;是和傅里叶变换相关的一种数学变换&#xff0c;用以确定时变信号其…

nvme分区选mbr还是guid_win7安装系统硬盘模式mbr和guid选哪个?

有很多系统之家的用户&#xff0c;还是喜欢安装win7系统的。但是在新的硬盘里面我们要分区的话&#xff0c;会出现mbr和guid是硬盘分区的两个格式&#xff0c;很多用户在做系统的时候不知道选哪个好&#xff0c;其实最好根据自己的电脑的配置&#xff0c;下面来看看详细的介绍吧…

uefi+guid分区与legacy+mbr分区_硬盘分区表格式GUID和MBR知识普及

我们的电脑硬盘分区格式一共有两种,一种是GUID(GPT),一种是MBR。 啥是硬盘分区呢?举个例子你就明白了,很多人去买电脑的时候,比如你买的电脑只有一块硬盘,店家就会给你分区,把这一块硬盘分成好几个区,比如分成了系统,软件,文档这样三个,那么你打开【我的电脑】后就会…

nvme分区选mbr还是guid_SSD里的特例:NVME固态改MBR格式、装Win7

问题一:NVME固态是否支持MBR文件格式: 场景:前几天朋友兴致冲冲的买了个建兴T10,准备好好体验一下。但是正当他吃着火锅,唱着歌,突然就给麻匪劫了——电脑系统竟然接二连三莫名奇妙的崩溃。 于是朋友就向我求助。由于他的电脑最近除了换了硬盘,并没有添加任何其他的硬设…

guid备份分区表crc错误_硬盘GPT和MBR分区表转换方法

随着硬盘容量越来越大,传统的MBR硬盘分区模式已经不能满足发展需要,预装win8或win10系统的硬盘默认都是GPT分区表(GUID格式),GPT识别2T以上的硬盘以及UEFI启动模式。不过在对系统进行重装时,经常会遇到无法安装在GPT或MBR硬盘中的问题,那么这个时候就需要对硬盘的分区表进…

GUID与MBR

磁盘分区表方案 全局唯一标识分区表是一个实体硬盘的分区表的结构布局的标准。 先说说目前广泛使用的磁盘分区表方案。传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中&#xff0c;每个分区项占用16个字节&#xff0c;这16个字节中…

如何将MBR转为GUID?这方法易于使用且安全!

为什么要将MBR转为GUID(GPT)&#xff1f; MBR代表主引导记录&#xff0c;它使用Legacy BIOS分区表。而GPT磁盘&#xff0c;也就是GUID分区表的缩写&#xff0c;是一种引入了统一可扩展固件接口 (UEFI) 的新布局。GPT磁盘有2个主要优势&#xff1a; GPT磁盘每个分区…

计算机硬盘分区信息,你知道电脑硬盘分区Guid格式和MBR格式有什么区别吗?来看看!...

现在的电脑随着技术的更新&#xff0c;传统的MBR格式虽然支持兼容&#xff0c;但是win10系统基本都使用了GUID分区格式&#xff0c;这样会让整体的系统运作得更有效率。如果还在使用MBR格式的用户想安装系统&#xff0c;没有设置好分区格式&#xff0c;容易导致安装出错&#x…

nvme分区选mbr还是guid_UEFI+GPT和Legacy+MBR两种模式安装的系统有什么区别

UEFI+GPT和Legacy+MBR两种模式安装的系统有什么区别?很多电脑小白都搞不懂UEFI、GPT、BIOS、MBR到底是什么意思,下面跟随小白系统一起深入了解下UEFI+GPT和Legacy+MBR两种模式安装的系统有什么区别吧。 一、了解专业名词 BIOS,全称"Basic Input Output System",中…

nvme分区选mbr还是guid_怎么分辨硬盘是GUID格式还是MBR格式以及怎样更改

首先我们要大概了解一下MBR和GUID是什么 mbr是指主引导记录,guid是指全局唯一标识符(其实我也不太懂这是啥),两者都是硬盘的一种启动模式(大概是这个意思,欢迎指教) 但是mbr只支持2x1024mb,也就是传统意义上的2tb的储存,并且只能分最多4个区,而guid理论上来讲可以有无…

nvme分区选mbr还是guid_系统重装,硬盘分区MBR和GPT选哪个好?看完才知原来有这讲究!...

在重装系统时,不少用户会问老毛桃电脑的硬盘选择MBR格式还是GPT格式好呢?其实,如何选择格式和你用的电脑是BIOS启动或是UEFI启动有很大的联系。我们都知道现在大家较为常用的要么是BIOS+MBR模式,要么是UEFI+GPT模式,选择任意一种模式的分区对系统运行不会造成太大的影响。…

nvme分区选mbr还是guid_重装系统时,磁盘分区MBR和GPT模式哪个好?原来还有这两种区别!...

相信大家在重装系统之前就会将电脑磁盘进行分区,毕竟只有一个分区是不可以进行重装系统的。而且磁盘分区方便管理磁盘,每个分区之间相互独立,数据不容易产生混淆。那么大家在创建磁盘分区的时候,肯定都会遇到MBR和GPT两种引导模式,这时候就会产生人生的思考:究竟应该怎么…

nvme分区选mbr还是guid_老毛桃winpe的DiskGenius分区工具使用说明

在对磁盘进行分区时,存在着一大堆的设置,到底需要如何设置?分区表是什么?如何进行4K对齐?以下操作建议PE下使用,前期需要准备:制作老毛桃U盘启动盘(U盘大小需要8G以上)。 操作指引: 起始分区操作请看:第1步 GUID分区表(GPT硬盘)操作请看:第2~7步; MBR分区表操作请看:…

服务器系统要用GUID还是MBR,win7mbr和guid应该选哪一个

win7mbr和guid是硬盘分区的两个格式&#xff0c;很多用户在做系统的时候不知道选哪个好&#xff0c;其实最好根据自己的电脑的配置&#xff0c;下面来看看详细的介绍吧。 win7mbr和guid选哪个 WIN7&#xff1a;建议MBR分区。因为Windows 7默认不支持UEFI系统安装&#xff0c;无…

服务器系统要用GUID还是MBR,分享win10分区格式MBR和GUID有什么区别 教你区分MBR和GUID格式...

今天IT天空小编要给大家分享下最新的教程 电脑装win10系统需要选择正确的分区格式&#xff0c;这样电脑才能保持正常运转&#xff0c;如果格式安装错误&#xff0c;电脑就没办法继续运行了。一般情况下&#xff0c;win10分区格式MBR和GUID两种选择&#xff0c;那么这两者有何区…

【小白装系统】——硬盘分区表格式GUID和MBR知识普及

我们的电脑硬盘分区格式一共有两种,一种是GUID(GPT),一种是MBR。 怎么判断自己硬盘是哪一种: 如果你的电脑原装系统是win8或者以上的,那么他的硬盘分区表格式为GUID(GPT)格式的;如果是win7以下的,那么一般就是MBR的了。 除此之外我们还可以利用分区工具DiskGen…

python输出去空格_python不空格

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 退格(backspace) e 转义 000 空 n 换行 v 纵向制表符 t 横向制表符 r 回车 f 换页oyy 八进制数yy代表的字符,例如:o12代表换行 xyy 十进制数yy代表的字符,例…

python中去除空格用什么函数_python中用什么函数去掉空格

python中去掉空格的方法有以下几种 1.使用lstrip()函数去掉左边空格string " * it is blank space test * "print (string.lstrip()) 输出结果为&#xff1a;* it is blank space test * 2.使用rstrip()函数去掉右边空格string " * it is blank space tes…