我这有个matlab程序 短时傅立叶变换的 希望有高手可以给加上详细注解[y,Fs,bits]=wavread('D:\6.wav');y=y(:,1);sound(y,Fs,bits);sigLength=length(y);Fs=50000;d=100;%连续段的重叠长度L=512;k=L-d;t=fix(sigLength/k);frame_len
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/12 20:17:13
![我这有个matlab程序 短时傅立叶变换的 希望有高手可以给加上详细注解[y,Fs,bits]=wavread('D:\6.wav');y=y(:,1);sound(y,Fs,bits);sigLength=length(y);Fs=50000;d=100;%连续段的重叠长度L=512;k=L-d;t=fix(sigLength/k);frame_len](/uploads/image/z/8627868-36-8.jpg?t=%E6%88%91%E8%BF%99%E6%9C%89%E4%B8%AAmatlab%E7%A8%8B%E5%BA%8F+%E7%9F%AD%E6%97%B6%E5%82%85%E7%AB%8B%E5%8F%B6%E5%8F%98%E6%8D%A2%E7%9A%84+%E5%B8%8C%E6%9C%9B%E6%9C%89%E9%AB%98%E6%89%8B%E5%8F%AF%E4%BB%A5%E7%BB%99%E5%8A%A0%E4%B8%8A%E8%AF%A6%E7%BB%86%E6%B3%A8%E8%A7%A3%5By%2CFs%2Cbits%5D%3Dwavread%28%27D%3A%5C6.wav%27%29%3By%3Dy%28%3A%2C1%29%3Bsound%28y%2CFs%2Cbits%29%3BsigLength%3Dlength%28y%29%3BFs%3D50000%3Bd%3D100%3B%25%E8%BF%9E%E7%BB%AD%E6%AE%B5%E7%9A%84%E9%87%8D%E5%8F%A0%E9%95%BF%E5%BA%A6L%3D512%3Bk%3DL-d%3Bt%3Dfix%28sigLength%2Fk%29%3Bframe_len)
我这有个matlab程序 短时傅立叶变换的 希望有高手可以给加上详细注解[y,Fs,bits]=wavread('D:\6.wav');y=y(:,1);sound(y,Fs,bits);sigLength=length(y);Fs=50000;d=100;%连续段的重叠长度L=512;k=L-d;t=fix(sigLength/k);frame_len
我这有个matlab程序 短时傅立叶变换的 希望有高手可以给加上详细注解
[y,Fs,bits]=wavread('D:\6.wav');
y=y(:,1);
sound(y,Fs,bits);
sigLength=length(y);
Fs=50000;
d=100;%连续段的重叠长度
L=512;
k=L-d;
t=fix(sigLength/k);
frame_length=512;
r=(rectwin(frame_length));
for a=1:t
n1=(L-d)*(a-1)+1;
\x05n2=(L-d)*(a-1)+frame_length;
\x05s=y(n1:n2);
\x05sf=fft(s'.*r',512 );
X1(n1:n2)=sf(1:frame_length);
end
SIZE=8000;
Y=zeros(SIZE,1);
Y=20*log10(abs(X1));
figure,plot(Y(1:4000));title('频谱图');
figure,plot(y);title('时域图');
我这有个matlab程序 短时傅立叶变换的 希望有高手可以给加上详细注解[y,Fs,bits]=wavread('D:\6.wav');y=y(:,1);sound(y,Fs,bits);sigLength=length(y);Fs=50000;d=100;%连续段的重叠长度L=512;k=L-d;t=fix(sigLength/k);frame_len
[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次傅立叶变换的数据的起始值坐标
\x09n2=(L-d)*(a-1)+frame_length;%获取第a次傅立叶变换数据的尾端数据值的坐标
\x09s=y(n1:n2);%做第a次傅立叶变换的原始信号值
\x09sf=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('时域图');%画出傅立叶变换前的原始音频时域图