短时傅里叶变换的matlab程序
时间: 2023-10-31 17:07:39 浏览: 116
短时傅里叶变换Matlab程序
5星 · 资源好评率100%
以下是短时傅里叶变换的matlab程序:
close all;
clear;
clc;
fs = 1000;
t = 0:1/fs:4-1/fs;
L=4000;
signal=fenduan(t);
% 窗口大小,推荐取 2 的幂次
wlen = 256;
% hop size 即移动步长,一般要取一个小于 wlen 的数,推荐取 2 的幂次
hop = wlen/4;
% FFT 点数,理论上应该不小于wlen,推荐取 2 的幂次
nfft = 256;
win = blackman(wlen, 'periodic');
[S, F, T] = spectrogram(signal, win, wlen - hop, nfft, fs);
subplot(2,1,2);
PlotSTFT(T, F, S,win);
title('spectrogram');
其中,fenduan(t)是一个自定义的函数,用于生成信号。win是窗口函数,这里使用的是Blackman窗口。spectrogram函数用于计算STFT,返回的S是STFT的矩阵,F是频率向量,T是时间向量。最后使用PlotSTFT函数绘制STFT图像。
阅读全文