首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

我这有个matlab程序 短时傅立叶变换的 希望有高手可以给加上详细注解

发布网友 发布时间:2022-04-24 18:32

我来回答

1个回答

热心网友 时间:2023-11-01 19:32

[y,Fs,bits]=wavread('D:\6.wav'); %读取一段标题为6.wav的音频信号,该音频信号采样率为Fs,精度为bits,bits一般取值为8或者16位
y=y(:,1);
sound(y,Fs,bits); %播放该段音频
sigLength=length(y); %获取音频y的长度值
Fs=50000;%采样频率为50000Hz
d=100;%连续段的重叠长度
L=512;%傅立叶变换点数512
k=L-d;%每次变化取音频y的长度为k
t=fix(sigLength/k);%音频y可以分为t段来分别求取傅立叶变换
frame_length=512; %窗口长度为512
r=(rectwin(frame_length));%设定长度为512的矩形窗口
for a=1:t %开始做傅立叶变换,共做t次
n1=(L-d)*(a-1)+1;%获取第a次傅立叶变换的数据的起始值坐标
n2=(L-d)*(a-1)+frame_length;%获取第a次傅立叶变换数据的尾端数据值的坐标
s=y(n1:n2);%做第a次傅立叶变换的原始信号值
sf=fft(s'.*r',512 );%512点的傅立叶变换
X1(n1:n2)=sf(1:frame_length);%把傅立叶变换后的值赋给矩阵X1
end
SIZE=8000;
Y=zeros(SIZE,1); %生成一个8000X1的矩阵
Y=20*log10(abs(X1));%获取傅立叶变换的幅值的对数值
figure,plot(Y(1:4000));title('频谱图');%画出傅立叶变换后的频谱谱
figure,plot(y);title('时域图');%画出傅立叶变换前的原始音频时域图

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com