短时傅里叶变换(1)
短时傅里叶变换(1)
目录:
- 前言
- 实验环境
- Matlab spectrogram函数
- 1语法
- 2使用说明
- 3代码如下:
前言
之前讲了时频分析的原理,现在来讲讲它在matlab里面的实现。
想要复习原理的同学,可以参照一一下这篇:短时傅里叶分析
本次先讲解四个函数,后续的请参见下篇。
实验环境
本文的所有实验都是在matlab2016a下通过的。
Matlab spectrogram函数
谱图函数使用短时傅里叶变换
1语法
>
s = spectrogram(x)s = spectrogram(x,window)s =spectrogram(x,window,noverlap)s =spectrogram(x,window,noverlap,nfft)
- 1
- 2
- 3
- 4
2使用说明
s = spectrogram(x)
返回输入信号(x)的短时傅里叶变换,s的每一列包含着信号s短期时间锁定的频率成分
详细说明:
返回输入信号x的谱图,结果存储在矩阵s中。默认设置:X被分割为8段,每段都有50%重叠,每个段落都经过汉宁窗处理。nfft的点数是256或者比每段X最多点数大的2的倍数。如果x不能被分成8段,它会被截断。
S = spectrogram(X,WINDOW)
详细说明:当window是一个向量的时候,将x划分成每段长数和window一样长的n段,并使用window对每段信号进行处理,如果window是一个整数,则将x分成这么多段,并使用汉宁窗进行处理。
S = spectrogram(X,WINDOW,NOVERLAP) .
noverlp 重叠部分是x中重叠的点数,当window是整数的时候,它必须是个小于window的整数,当window是向量的时候它必须小于window的长度,默认值是50%重叠。
S = spectrogram(X,WINDOW,NOVERLAP,NFFT)
额外设置NFFT的点数。
3代码如下:
产生一个1024点的采样信号,信号源是两个正弦波的叠加,归一化频率分别是0.4pi,和0.8pi,高频信号的能量是低频的10倍。
N = 1024;
n = 0:N-1;
w0 = 2*pi/5;
计算短时傅里叶变换,并使用默认参数画出谱图。
x = sin(w0*n)+10*sin(2*w0*n);
s = spectrogram(x);
spectrogram(x,'yaxis')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
重复验证计算:
- 将源信号分割成几个段的信号 ???=⌊N?/4.5⌋nsc=⌊Nx/4.5⌋.
验证这俩个途径的计算结果是否相同:
Nx = length(x);
nsc = floor(Nx/4.5);
nov = floor(nsc/2);
nff = max(256,2^nextpow2(nsc));
t = spectrogram(x,hamming(nsc),nov,nff);
maxerr = max(abs(abs(t(:))-abs(s(:))))
- 1
- 2
- 3
- 4
- 5
- 6
maxerr =0
- 1
- 2
- 3
- 4
误差为0,因此,这种方法是可以使用的。
将信号分割成8个等长的部分,每个区段由50%的部分重叠。将FFT的长度确定为和之前的步骤一样长。计算短时傅里叶变换并确认它的结果和之前的两个步骤得出的结果一样。
ns = 8;
ov = 0.5;
lsc = floor(Nx/(ns-(ns-1)*ov));
t = spectrogram(x,lsc,floor(ov*lsc),nff);
maxerr = max(abs(abs(t(:))-abs(s(:))))
- 1
- 2
- 3
- 4
- 5
maxerr =0
- 1
- 2
- 3
- 4
误差为0,因此,这种方法是可以使用的。
短时傅里叶变换(1)相关推荐
- 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 ...
- librosa.stft() 短时傅里叶变换
librosa 短时傅里叶变换 import numpy as np # pip install numpy import librosa # pip install librosa y, sr = ...
- matlab---spectrogram短时傅里叶变换与chrip信号
文章目录 0.背景 1.chrip信号 1.matlab帮助文档对chirp的解释 2.非线性调频 1.高斯包络的调频信号 2.spectrogram 利用surf根据spectrogram的返回参数 ...
- 2021-05-10 Matlab短时傅里叶变换和小波变换的时频分析
Matlab短时傅里叶变换和小波变换的时频分析 简介 本文主要给定一小段音频,通过短时傅里叶变换和小波变换制作时频图.音频的采样率为44100, 短时傅里叶变换 在matlab中,短时傅里叶变换的分析 ...
- 2021-02-28 Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图
Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图 function [t,frequency,f_spectrum]=fft_s(y,windowlength,Fs) % 输入 : % ...
- 时频分析:短时傅里叶变换应用
目录: 前言 实验环境 Matlab spectrogram函数 1语法 2举栗子: 2.1跟踪声音信号里的鸟声轨迹 2.2谱图3d可视化 参考: 前言 之前讲了时频分析的原理,和matlab里面的相 ...
- 时频分析:短时傅里叶变换实现(2)
目录: 文章目录 补充 #前言 之前讲了时频分析的原理,现在来讲讲它在matlab里面的实现. 想要复习原理的同学,可以参照一一下这篇: 短时傅里叶分析 本次讲解中阶的函数,基础的可以参见前面的: 短 ...
- 时频分析:短时傅里叶变换实现(1)
目录: 前言 实验环境 Matlab spectrogram函数 1语法 2使用说明 3代码如下: 前言 之前讲了时频分析的原理,现在来讲讲它在matlab里面的实现. 想要复习原理的同学,可以参照一 ...
- 【音频处理】短时傅里叶变换
前言 上一篇博客讲了离散傅里叶变换,里面的实例是对整个信号进行计算,虽然理论上有N点傅里叶变换(本博客就不区分FFT和DFT了,因为它俩就是一个东东,只不过复杂度不同),但是我个人理解是这个N点是信号 ...
- Python音频信号处理 1.短时傅里叶变换及其逆变换
短时傅里叶变换及其逆变换 本篇文章主要记录了使用python进行短时傅里叶变换,分析频谱,以及通过频谱实现在频域内降低底噪的代码及分析,希望可以给同样在学习信号处理的大家一点帮助,也希望大家对我的文章 ...
最新文章
- wireshare capture filter捕捉过滤的设置
- 【Tools】Linux远程拷贝工具(WinSCP)
- c 语言输出后不关闭_穿书+娱乐圈 |再不跑路就要被迫C位出道了花瓶女配和影帝组CP后豪门娇美人是爽文剧本...
- 深入理解JavaScript系列:《你真懂JavaScript吗?》答案详解
- 技嘉z77主板msata速度_功不可没的技嘉Z77主板_主板评测-中关村在线
- [转贴]原创控件代码共享--日期选择控件
- SAP 产品条码WMS结合 以及ABAP script的集成 BarCode
- 大兴服务器硬盘回收行情价格,回收服务器 硬盘 内
- 这个游戏引擎开源了!
- python round用法_Python round 函数
- 判断一个很大的数是否是11的倍数(2种做法)
- 电脑端微信用户图片DAT格式解码为图片
- svm神经网络葡萄酒matlab,SVM神经网络的数据分类预测-葡萄酒种类识别
- const T、const T*、T *const、const T、const T* 的区别
- node如何使用mongoose?
- rufus制作ubuntuU盘启动以及window10和ubuntu20.04.2双系统
- CSS文本溢出省略号在Grid / Flex中不起作用
- Lua安装及常用命令使用
- 个总开源License授权
- 在MYSQL上添加TokuDB引擎