关于matlab、FFT。

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(‘频谱图’)

运行不了

本文为原创文章,转载请注明出处!