用STFT函数获取信号频谱(附代码)

展示视频

和另一个版本

关于stft函数的介绍可见本人之前文章

下面是画图函数
%----------------------------------------HDTT------------------------------%
%读取音频
[music,fs]=audioread("feat.mp3");
%取单声道
music=music(:,1);
%短时距傅里叶变换
%stft函数是matlab2019的新函数
[S,F,T]=stft(music,fs,'Window',hamming(128,'periodic'),'OverlapLength',60);
%画瀑布图
waterfall(F,T,abs(S(:,:))');
xlabel('频率(Hz)');
ylabel('时间线');
title('短时傅里叶变换');
如何利用函数生成视频可见本人之前视频和文章。


附代码
out = VideoWriter('stft_4.avi');
out.FrameRate = 10;%一秒播放几帧
open(out);%打开视频文件
[music,fs]=audioread("feat.mp3");
music=music(:,1);
%这个就是往后挪的函数
for n=1:1510
%plot_stft是用stft写的函数,n就是往后挪几个单位
length=plot_stft(music,fs,n);
F=getframe(gcf);%获取当前帧
writeVideo(out, F);%将当前帧写入视频文件
end
close(out);%关闭视频文件
如何生成另一个视频的山峰效果呢?
这样就行了:
[music,fs]=audioread("feat.mp3");
%取单声道
music=music(:,1);
%短时距傅里叶变换
stft(music,fs,'Window',hamming(128,'periodic'),'OverlapLength',60);
最后欢迎收看短时距傅里叶变换原理
