短时傅里叶变换(4)

目录:

前言

之前讲了时频分析的原理,现在来讲讲它在matlab里面的实现。
想要复习原理的同学,可以参照一下这篇:短时傅里叶分析(1)
本次讲解进阶的函数使用,
基础的可以参见前面的:短时傅里叶实现(1)
中阶的可以参见前面的:短时傅里叶实现(2)
高阶的可以参见前面的:短时傅立叶实现(3)

实验环境

本文的所有实验都是在matlab2016a下通过的。

Matlab spectrogram函数

谱图函数:使用短时傅里叶变换化成短时傅里叶变换的谱图。

1语法

标准函数引用方式如下:

[___,ps] = spectrogram(___) 
[___] = spectrogram(___,'reassigned') 
[___,ps,fc,tc] = spectrogram(___) 
 
 
  • 1
  • 2
  • 3

2使用说明

[,ps] = spectrogram()
返回一个谱密度估计的矩阵
[] = spectrogram(,’reassigned’)
将谱的能量定位到时域的中心,如果你的信号包含中心稳定的视频成分,则这个操作会生成一个更尖锐的谱图。
[,ps,fc,tc] = spectrogram()
返回两个矩阵,fc和tc,包含着每个谱密度和功率谱估计的频率和时域中心

3代码如下

3.1重新分配平方鸟声的谱图

%产生一个平方鸟声(chirp)信号,采样频率是1khz,采样时间是2秒,前一秒的信号是100hz,后一秒的信号是200hz。                                                                                                                 
Fs = 1000;
t = 0:1/Fs:2-1/Fs;
y = chirp(t,100,1,200,'quadratic');
%估计重新浓缩的信号谱图
% 将信号划分成长度为128个点,使用KAiser窗加窗,床的参数是18
%每个间隔段,重叠120个样本
%在【128/2+1】=65个点处和【(length(x)-120)/(128-120)】=235时间块处得到频率点
spectrogram(y,kaiser(128,18),120,128,Fs,'reassigned','yaxis')
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如图所示
这里写图片描述

3.2设置了下限的谱图

%产生一个平方鸟声(chirp)信号,采样频率是1khz,采样时间是2秒,前一秒的信号是100hz,后一秒的信号是200hz。                                                                                                                 
Fs = 1000;
t = 0:1/Fs:2-1/Fs;
y = chirp(t,100,1,200,'quadratic');
%估计信号的时间依赖的功率谱密度
%将信号划分成长度为128个点,使用KAiser窗加窗,床的参数是18
%每个间隔段,重叠120个样本
%在【128/2+1】=65个点处和【(length(x)-120)/(128-120)】=235时间块处得到频率点
%输出频率和时间的功率谱密度估计的中心,将功率谱密度低于30的设置为0
[~,~,~,pxx,fc,tc] = spectrogram(y,kaiser(128,18),120,128,Fs, ...
    'MinThreshold',-30);
画出非零部分的时间频率函数
plot(tc(pxx>0),fc(pxx>0),'.')
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

如图所示:
这里写图片描述


参考:

mathworks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值