STFT filter bank

article/2025/10/7 6:43:37

STFT filter bank

STFT根据公式不同的写法,可以推导出overlap-add和filter-bank两种不同的实现方式


X(w)=nx(n)w(nmR)ejωn X ( w ) = ∑ n x ( n ) w ( n − m R ) e − j ω n

先暂时讨论R = 1的情况
filter bank可以用以下流程表示


这里写图片描述

分析下以上步骤:
1. 输入信号 x(n) x ( n ) 被一个复指数调制,任意信号都可以分解成正弦函数的叠加,


x(n)=c=Nc=1akejωcn x ( n ) = ∑ c = 1 c = N a k e j ω c n

乘以一个复指数后


x(n)=c=Nc=1akej(ωcωk)n x ( n ) = ∑ c = 1 c = N a k e j ( ω c − ω k ) n

因此复指数调试过程在频域可以看做是进行频谱搬移,即所有频率的信号都往前搬移了 ωk ω k ,可以看出,原先 x(n) x ( n ) 中在 ωk ω k 频率的信号便被调制到了0频率处,
2. 调制后的信号 xk x k 再与窗函数 w w 做卷积,时域卷积对应频域相乘,窗函数在频域为一个低通滤波器,因此输出Xn(ωk)是原先包含 ωk ω k 然后被调制到直流频率处的信号

那如果再在输出解调一下,也就是再乘上一个 ejωkn e j ω k n ,如下图


这里写图片描述

上图整个过程就相当于让 x(n) x ( n ) 通过了一个中心频率为 ωc ω c 的带通滤波器

用代码验证下上述过程的效果

N=20;           % number of filters = DFT length 
fs=1000;        % sampling frequency (arbitrary)
D=1;            % duration in secondsL = ceil(fs*D)+1; % signal duration (samples)
n = 0:L-1;        % discrete-time axis (samples)
t = n/fs;         % discrete-time axis (sec)
x = chirp(t,0,D,fs/2);   % sine sweep from 0 Hz to fs/2 Hz
%x = echirp(t,0,D,fs/2); % for complex "analytic" chirp 
x = x(1:L);       % trim trailing zeros at end
h = ones(1,N);    % Simple DFT lowpass = rectangular window
%h = hamming(N);  % Better DFT lowpass = Hamming window
X = zeros(N,L);   % X will be the filter bank output
y = zeros(N,L);   % X will be the filter bank output
for k=1:N         % Loop over channelswk = 2*pi*(k-1)/N;xk = exp(-j*wk*n).* x;  % Modulation by complex exponentialX(k,:) = filter(h,1,xk);
end
for k=1:N         % Loop over channelswk = 2*pi*(k-1)/N;yk = exp(1j*wk*n).* X(k,:);  % demodulation by complex exponentialy(k,:) = yk;
end
y_out = sum(y)/(N*h(1));

上面代码中,输入为扫频信号,20个滤波器组,信号在每个通道先经过调制,然后经过窗滤波,最后再通过解调还原,按照前面的解释,输出的 y y <script type="math/tex" id="MathJax-Element-22">y</script>各个通道应该是带通滤波器的结果,画出几个通道的频谱如下

fft1 = abs(fft(real(y(1,:))));
fft2 = abs(fft(real(y(5,:))));
fft3 = abs(fft(real(y(9,:))));
figure,
omega = (1:length(fft1)/2)*2/length(fft1);
subplot(3,1,1),plot(omega,fft1(1:500)),title('y1')
subplot(3,1,2),plot(omega,fft2(1:500)),title('y5')
subplot(3,1,3),plot(omega,fft3(1:500)),title('y9')


这里写图片描述


http://chatgpt.dhexx.cn/article/HcgODGEE.shtml

相关文章

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

笔记~自用版~ 短时傅里叶变换的基础理论 短时傅里叶变换&#xff08;Short-Time Fourier Transform, STFT&#xff09;是一种时频分析方法&#xff0c;它将信号在时间域上分成若干个短时段&#xff0c;对每个短时段进行窗函数加窗后再做傅里叶变换&#xff0c;得到每个时刻的频…

Revertable STFT

最近在做利用深度学习去噪的工作&#xff0c;大部分的工作都是利用spectrogram特征来做的&#xff0c;这就需要用到STFT&#xff0c; 本次利用的是python的scipy.signal模块。 在做去噪的时候&#xff0c;首先需要先将输入信号x利用stft转换成spectrogram&#xff1a; ff, tt…

时频分析之STFT:短时傅里叶变换的原理与代码实现(非调用Matlab API)

1. 引言 在信号分析中&#xff0c;傅里叶变换可称得上是神器。但在实际应用中&#xff0c;人们发现它还是存在一些不可忽视的缺陷。 为了便于叙述考察以下两种情形&#xff1a; Case 1 考察这样一个函数&#xff1a; fs 1000; t 0:1/fs:1 - 1/fs; x [10 * cos(2 * pi *…

C语言版本STFT/ISTFT

接上一篇&#xff1a;https://blog.csdn.net/SPESEG/article/details/101672559 注意&#xff1a;寡人的stft是有前提条件的&#xff0c;并不是完全与librosa.stft一一对应【我的版本参数是固定的&#xff0c;不可变&#xff0c;其他是一样的】&#xff0c;因为我的hop_length…

stft isar成像 matlab,基于STFT和FRFT的运动目标雷达三维成像方法与流程

本发明属于数字信号处理技术领域,特别涉及一种运动目标雷达三维成像方方法,可 用于对运动目标识别时,雷达ISAR对其三维成像。 背景技术: 逆合成孔径雷达ISAR是一种全天候、全天时的远程探测手段,具有对运动目标进行 成像的能力,被广泛应用于目标跟踪、目标识别、机场监视…

librosa 语音库(二)STFT 的实现

librosa是一个应用广泛的音频处理python库。 在librosa中有一个方法叫做stft&#xff0c;功能是求音频的短时傅里叶变换, librosa.stft 返回是一个矩阵 短时傅立叶变换&#xff08;STFT&#xff09;&#xff0c;返回一个复数矩阵使得D(f,t) 当调用的形式是 np.abs( stft() ),…

python的opencv操作记录(七)——短时傅里叶变换(stft)

文章目录 DCT-傅立叶变换的局限性STFT 短时傅里叶变换从另一个角度来理解图像的“时域”数据看看fs和t这两个参数再看看怎么划分窗口最后看另外两个出参Zxx返回结构 图像的stft DCT-傅立叶变换的局限性 接上一篇DCT的文章&#xff0c;DCT只提取了整个信号域的频率信息&#xf…

傅里叶变换@(stft和istft)

一、窗函数之短时傅里叶变换stft 前提&#xff1a; 傅里叶变换是针对平稳信号的&#xff0c;但是很多实际应用中的信号都是非平稳的&#xff0c;如果要计算其傅里叶变换&#xff0c;需要假设其周期无限长&#xff0c;然后对这个无限长的信号做变换分析。但是这种无限长信号分…

scipy短时傅里叶分析STFT

scipy短时傅里叶分析 基本原理&#xff1a; 为了使STFT能够通过STFT逆变换反变换&#xff0c;信号加窗必须服从“非零重叠加”(NOLA)的约束&#xff0c;输入信号必须具有完整的加窗覆盖即 ( x . s h a p e [ a x i s ] − n p e r s e g ) (x.shape[axis] - nperseg) % (nper…

STFT笔记

因为不懂这个被鄙视了&#xff0c;调包侠来补作业。 基础知识 FFT(fast fourier transfrom)快速傅里叶变换。 推荐阅读《深入浅出的讲解傅里叶变换&#xff08;真正的通俗易懂&#xff09;》&#xff0c; 《梅尔频率倒谱系数&#xff08;MFCC&#xff09;》。 频谱只获得了频…

利用短时傅里叶变换(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…