参照网址短时傅里叶变换

参照上述网址,尝试编写短时傅里叶变换得程序,为了加深对短时傅里叶计算过程的理解,也为后续的其他算法先打下基础。编程能力较差,虽然仿照,但可能依然由很多考虑不到。

function [s,f,t] = sftf(x,window,overlap,nfft,fs)% x: 输入的一维数组% window: 窗的类型,当输入为一整数时,默认使用hanning窗% overlap:重叠的长度% nfft:做一次傅里叶变换得长度% fs:采样频率%     默认参数设置if nargin < 2 || isempty(window);   window = hanning(256); endif length(window) == 1;             window = hanning(window); endif nargin < 3 || isempty(overlap);  overlap = floor(length(window)/2); endif nargin < 4 || isempty(nfft);     nfft = length(window); endif nargin < 5 || isempty(fs);       fs = 2; endif length(window) > nfft;           nfft = length(window); endn = length(window);step = n - overlap;                                     %每次移动的步长step_nums = ceil(abs(length(x)-overlap)/abs(step));    %需要移动多少步%     需要将x补全,最后不足以领补全[x_row, x_col] = size(x);if x_row ==1; x = x'; end                               % x变换为一列if x_col ~= 1 && x_row ~=  1; error('输入的x不是一维数组'); endx_len = step * (step_nums-1) + n;mm = x_len-length(x);x_bu = zeros(mm, 1);x = [x; x_bu];%     将x进行拆分S = zeros(n, step_nums);t = 1:step:x_len-n+1;for i = 1:length(t)S(:,i) = x(t(i):t(i)+n-1).*window;end%     进行快速傅里叶变换SFTF = fft(S,nfft);if rem(n,2)==1; x_fre = (n+1)/2; endif rem(n,2)==0; x_fre = n/2+1; endSFTF = abs(SFTF/n);s = SFTF(1:x_fre,:);s(2:end-1,:) = 2*s(2:end-1,:);f = (0:x_fre-1)*fs/n;t = t/fs;% 画图部分
%     figure
%     surf(t,f,10*log10(abs(s)),'EdgeColor','none');
%     axis xy;
%     axis tight;
%     colormap(jet);
%     view(0,90);
%     xlabel('Time');end

使用数据进行测试结果如下

clc
Fs = 1000;
N = 2000;
t = 0:1/Fs:(N-1)/Fs;
y = 1.5*sin(2*pi*80*t)+1.5*sin(2*pi*160*t)+1.5*sin(2*pi*240*t)+2*sin(2*pi*320*t)+2*sin(2*pi*120*t);
[s,f,t] = sftf(y, 300,100,300,Fs);
figure
surf(t,f,10*log10(abs(s)),'EdgeColor','none');
axis xy;
axis tight;
colormap(jet);
view(0,90);
xlabel('Time');
ylabel('Frequency (Hz)');

短时傅里叶变换程序实现相关推荐

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

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

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

    利用短时傅里叶变换(STFT)对信号进行时频谱分析和去噪声 1.背景  傅里叶变换(TF)对频谱的描绘是"全局性"的,不能反映时间维度局部区域上的特征,人们虽然从傅立叶变换能清楚地 ...

  3. tf.signal.stft() 短时傅里叶变换的示例

    import tensorflow as tf import numpy as np a1 = np.arange(5) print(a1) [0 1 2 3 4] a2 = a1.astype(np ...

  4. librosa.stft() 短时傅里叶变换

    librosa 短时傅里叶变换 import numpy as np # pip install numpy import librosa # pip install librosa y, sr = ...

  5. matlab---spectrogram短时傅里叶变换与chrip信号

    文章目录 0.背景 1.chrip信号 1.matlab帮助文档对chirp的解释 2.非线性调频 1.高斯包络的调频信号 2.spectrogram 利用surf根据spectrogram的返回参数 ...

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

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

  7. 时频分析:短时傅里叶变换应用

    目录: 前言 实验环境 Matlab spectrogram函数 1语法 2举栗子: 2.1跟踪声音信号里的鸟声轨迹 2.2谱图3d可视化 参考: 前言 之前讲了时频分析的原理,和matlab里面的相 ...

  8. 时频分析:短时傅里叶变换实现(2)

    目录: 文章目录 补充 #前言 之前讲了时频分析的原理,现在来讲讲它在matlab里面的实现. 想要复习原理的同学,可以参照一一下这篇: 短时傅里叶分析 本次讲解中阶的函数,基础的可以参见前面的: 短 ...

  9. 时频分析:短时傅里叶变换实现(1)

    目录: 前言 实验环境 Matlab spectrogram函数 1语法 2使用说明 3代码如下: 前言 之前讲了时频分析的原理,现在来讲讲它在matlab里面的实现. 想要复习原理的同学,可以参照一 ...

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

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

最新文章

  1. 2022华为首个「天才少年」,是从绩点1.8逆袭的复旦博士
  2. python生成100个随机数_Python_0——100闭区间产生3个随机数,两种方法排序
  3. 共识协议(6)PBFT详细步骤
  4. [Swift]LeetCode781. 森林中的兔子 | Rabbits in Forest
  5. 下列哪个不是it行业技术岗位_28岁毕业进入IT互联网行业从事技术研发岗位是否还来得及...
  6. stm32上的Lava虚拟机开发进度汇报(3)
  7. 【电路补习笔记】10、电感式开关电源(BUCK 降压电路)
  8. Maven依赖排除 禁止依赖传递 取消依赖的方法
  9. asp.net权限控制配置web.config
  10. Linux防火墙-netfilter-iptables
  11. Mstar的Monitor方案笔记(五)——Gamma
  12. ios点击推送闪退_越狱后改造iOS系统 Cydia篇
  13. Java 14中对switch的增强,终于可以不写break了
  14. 怎么用计算机录制mp3的音频,电脑怎么录音,电脑录制音频的方法
  15. JPEG 原理分析及 JPEG 解码器的调试
  16. android电视无线同屏,手机连接电视同屏操作方法详解
  17. C++:重定义:符号重定义:变量重定义(二):解决变量重定义(const static)
  18. java_程序题分析:将人名集合 ,{“Peter”,”Mary”,”Sam”,”Tom”,”Paker”,”Linda”,”Lina”} ,进行字典顺序排序(a~z的顺序)
  19. Intel Altera PCIE IP介绍
  20. 科普NGK公链生态板块旗下的BGV、SPC、NGK、USDN四大币种

热门文章

  1. python中的猴子补丁Monkey Patch
  2. 嵌入式工程师需不需要学java_嵌入式开发工程师需要具备哪些素质和技能基础?...
  3. 怎么才能打开dwg图纸?
  4. Xshell上传文件到Centos服务器
  5. Ubuntu 16.04 解决RTL8111/8168/8411网卡有线连接网速慢的问题
  6. python3爬虫(2):使用Selenium爬取百度文库word文章
  7. cad中计算机的快捷键,CAD中一些常用的快捷键用法
  8. 信息学奥赛一本通(C++版)在线评测系统 1887:【15NOIP提高组】神奇的幻方
  9. HTML5添加网页音效
  10. 特朗普签署《美国人工智能倡议》,释放了哪些重要信号?