STFT filter bank

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

X(w)=∑nx(n)w(n−mR)e−jωnX(w)=∑nx(n)w(n−mR)e−jωnX(w)=\sum_{n}x(n)w(n-mR)e^{-j\omega n}

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

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

x(n)=∑c=Nc=1akejωcnx(n)=∑c=1c=Nakejωcnx(n)=\sum_{c=1}^{c=N} a_k e^{j\omega_cn}

乘以一个复指数后

x(n)=∑c=Nc=1akej(ωc−ωk)nx(n)=∑c=1c=Nakej(ωc−ωk)nx(n)=\sum_{c=1}^{c=N} a_k e^{j(\omega_c-\omega_k)n}

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

那如果再在输出解调一下,也就是再乘上一个ejωknejωkne^{j\omega_kn},如下图

上图整个过程就相当于让x(n)x(n)x(n)通过了一个中心频率为ωcωc\omega_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个滤波器组,信号在每个通道先经过调制,然后经过窗滤波,最后再通过解调还原,按照前面的解释,输出的yy<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')

STFT filter bank相关推荐

  1. MFCC/Filter Bank的提取流程

    预加重:通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响. 分帧:根据语音的短时平稳特性,语音可以以帧为单位进行处理,实验中选取的语音帧长为32ms,帧移为16ms ...

  2. 03 - 滤波器组典型相关分析(Filter bank canonical correlation analysis,fbcca)

    03 - 滤波器组典型相关分析(Filter bank canonical correlation analysis,fbcca) 这里介绍了一种简单的SSVEP算法,在实际中有着重要的作用. 文章目 ...

  3. 滤波器组共空间模式(Filter Bank Common Spatial Pattern,FBCSP)

    FBCSP matlab Matlab FBCSP实现 FBCSP原理 测试数据 文件结构结构如下 数据结构如下 运行结果 代码 主文件Test.m FBCSP.m函数 FBCSPOnline.m函数 ...

  4. 虹膜识别论文4:DeepIris: Learning pairwise filter bank for heterogeneous iris verification 2015

    DeepIris: Learning pairwise filter bank for heterogeneous iris verification 2015年 Pattern Recognitio ...

  5. STFT的综合分析--滤波器组求和(FBS)和叠相相加(OLA)

    STFT 固定频率时的两种解释 第一种解释 STFT的公式可以表示为: X(n,w)=∑n=−∞n=∞x(m)w(n−m)e−jwmX(n,w)=\sum_{n=-\infty}^{n=\infty} ...

  6. 论文阅读:Deep Filter Banks for Texture Recognition and Segmentation

    2015年的CVPR,深度卷积特征+Fisher Vector的方法在纹理数据库上得到了比较优秀的performance Motivation: 作者认为,对于纹理特征来说,使用全连接层的特征有一下三 ...

  7. librosa 语音库(三) librosa.feature. 中的 spectrogram 与 melspectrogram

    窗口的长度与 n_fft 需要匹配大小长度: 1. Mel 语谱图的函数定义 librosa.feature.melspectrogram()函数在spectral.py 中,实现过程为: def m ...

  8. 『语音信号处理』语音库 librosa 学习

    librosa 前言 音频读取 重采样 读取时长 写音频 过零率 波形图 短时傅里叶变换 短时傅里叶逆变换 幅度转dB 功率转dB 频谱图 Mel滤波器组 梅尔频谱 提取MFCC系数 前言 安装 li ...

  9. 声音领域的算法库一般有librosa、essentia、torchaudio、深度学习等

    这个领域的算法库一般有librosa.essentia.torchaudio.深度学习等.这个领域目前的工程套路是: 首先声音是一维的时域信号,但是计算机看了觉得没啥用(你看wav文件那些采样点,这些 ...

最新文章

  1. jquery 选择时间(小时)区间(四)
  2. python 图像降噪
  3. UNITY把3D模型显示在UI层级上的思路
  4. windows 8   远程桌面(RemoteFX )
  5. linux数据库监听配了两个,Oracle数据库和监听随LINUX系统启动
  6. Ubuntu 串口权限问题
  7. laravel+php+支付功能,Laravel 支付解决方案之如何使用微信支付进行支付 – Laravel学院...
  8. Web前端开发技术实验与实践(第3版)储久良编著实训11
  9. mysql密码怎么解密_MySQL密码加密与解密详解
  10. 【领域建模】UML类图工具推荐
  11. Windows文件系统-NTFS文件系统
  12. Java多维数组length
  13. 面向Web开发人员和网站管理员的Web缓存指南
  14. 什么是软链接, 什么是硬链接
  15. 基于Python实现的实时聊天系统
  16. STM32的中断优先级说明(抢占式与响应式优先级)
  17. MATLAB【函数和图像】
  18. java模拟一个军队作战,()系统在作战过程中帮助指挥和参谋人员实施各项作战业务,辅助指挥人员对部队和武器实施指挥控制...
  19. 专利地图制作及解析研究
  20. e智团队实验室项目-第一周-神经网络的学习

热门文章

  1. 【生信分析】一些关于生物信息的常见名字解释
  2. 用计算机弹咱们结婚吧乐谱,用计算器弹奏“周杰伦”,这些乐谱也太简单了吧!...
  3. Element table 导出Excel重复数据
  4. 由《创业时代》想到的
  5. HCNR200和HCNR201在电机驱动和电流回路中的应用
  6. 五子棋游戏源码和核心算法的讲解(简易五子棋web版)
  7. hyper用vnc连接,hyper用vnc连接该如何设置vnc
  8. Windows 修改桌面Desktop的默认路径为D盘
  9. Vue防抖(三种方式)
  10. Chromium网页Render Layer Tree创建过程分析