load handel.mat
filename = ‘handel.wav’;
audiowrite(filename,y,Fs);
clear y Fs
[y,Fs] = audioread(‘handel.wav’);
sound(y,Fs);
%分段fourier变换,每段长为512,每段加矩形窗,连续断之间重叠的长度100
S=audioread(‘C:\Users\yoga\Documents\MATLAB\Examples\R2019b\matlab\ReadCompleteAudioFileExample\handel.wav’);
subplot(3,1,1);plot(S),title(‘波形图’)
sound(S);
n=size(S);
d=10;
L=512;
k=L-d;
t=fix(n/k);
frame_length=512;
%采用滑动窗进行短时fft变换
S(rectwin(frame_length));
for a=L:t
nl=(L-d)*(a-1)+1;
n2=(L-d)*(a-1)+frame_length;
y=S(nl:n2);
sf=fft(Y’.*r’,512);
X1(n1:n2)=sf(1:frame_length);
end
FFTSIZE=8000; %FFT长度为8000点,每点对应于1Hz
Y=zeros(FFTSIZE,1);
Y=20*log10(abs(X1));
subplot(3,1,2);Plot(Y(1:4000)),titIe(‘频谱图’);%画前4000点
%IFFF变换
TI=length(X1);
tl=fix(T1/L);
for i=1:t1
z=ifft(X1((i-1)*L+1:i*L),512);
z=real(z./r’);
Y((i-1)*k+1:i*k)=z(1:k);
end
subplot(3,1,3);plot(Y),title(‘频谱图’)
运行不了
本文为原创文章,转载请注明出处!
admin:支持一下,感谢分享!,+10,