用STFT函數(shù)獲取信號頻譜(附代碼)

展示視頻

和另一個版本

關(guān)于stft函數(shù)的介紹可見本人之前文章

下面是畫圖函數(shù)
%----------------------------------------HDTT------------------------------%
%讀取音頻
[music,fs]=audioread("feat.mp3");
%取單聲道
music=music(:,1);
%短時(shí)距傅里葉變換
%stft函數(shù)是matlab2019的新函數(shù)
[S,F,T]=stft(music,fs,'Window',hamming(128,'periodic'),'OverlapLength',60);
%畫瀑布圖
waterfall(F,T,abs(S(:,:))');
xlabel('頻率(Hz)');
ylabel('時(shí)間線');
title('短時(shí)傅里葉變換');
如何利用函數(shù)生成視頻可見本人之前視頻和文章。


附代碼
out = VideoWriter('stft_4.avi');
out.FrameRate = 10;%一秒播放幾幀
open(out);%打開視頻文件
[music,fs]=audioread("feat.mp3");
music=music(:,1);
%這個就是往后挪的函數(shù)
for n=1:1510
%plot_stft是用stft寫的函數(shù),n就是往后挪幾個單位
? ? length=plot_stft(music,fs,n);
? ??
? ? F=getframe(gcf);%獲取當(dāng)前幀
? ? writeVideo(out, F);%將當(dāng)前幀寫入視頻文件
end
close(out);%關(guān)閉視頻文件
如何生成另一個視頻的山峰效果呢?
這樣就行了:
[music,fs]=audioread("feat.mp3");
%取單聲道
music=music(:,1);
%短時(shí)距傅里葉變換
stft(music,fs,'Window',hamming(128,'periodic'),'OverlapLength',60);
最后歡迎收看短時(shí)距傅里葉變換原理
