欢迎光临散文网 会员登陆 & 注册

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

2019-11-12 19:47 作者:不妙脆角  | 我要投稿

展示视频

和另一个版本

关于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);





最后欢迎收看短时距傅里叶变换原理


用STFT函数获取信号频谱(附代码)的评论 (共 条)

分享到微博请遵守国家法律