%Hello, this program reads the mywav.wav file and then displays the spectrum and waveform. Note that the mywav.wav file should not be too long, otherwise the operation will be very slow.
[y,Fs,bits]=wavread('mywav.wav');% read signal, sampling rate and sampling bits.
y=y(:,1);%I assume here that your voice is two-channel. I only use the mono channel for analysis. If you want to analyze another channel, please change it to y=y(: ,2)
sigLength=length(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=Fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength 1));xlabel('Frequency(Hz)');
t=(0:sigLength-1)/Fs;
figure;plot(t,y);xlabel('Time(s)');
Give me an example, just change it yourself
fs=1000;%Set sampling frequency
N=1024;%set data length
i=0:N-1;
t=i/fs;
f=100;%Set the frequency of sinusoidal signal
%Generate sinusoidal signal
x=sin(2*pi*f*t);
subplot(231);
plot(t,x);% makes the time domain waveform of the sinusoidal signal
axis([0,0.01,-1,1]);
xlabel('t');
ylabel('y');
title('Sinusoidal signal time domain waveform');
grid;
%Perform FFT transformation and make a spectrogram
y=fft(x,N);% perform fft transformation
mag=abs(y);% amplitude
f=(0:N-1)*fs/N; The expression of % abscissa frequency is f=(0:M-1)*Fs/M;
subplot(232);
plot(f,mag);% make a spectrogram
axis([0,100,0,80]);
xlabel('Frequency (Hz)');
ylabel('magnitude');
title('Sinusoidal signal amplitude spectrum diagram');
grid;
%root mean square spectrum
sq=abs(y);
figure(1);
subplot(233);
plot(f,sq);
xlabel('Frequency (Hz)');
ylabel('root mean square spectrum');
title('Root mean square spectrum of sinusoidal signal');
grid;
%power spectrum
power=sq.^2;
figure(1);
subplot(234);
plot(f,power);
xlabel('Frequency (Hz)');
ylabel('power spectrum');
title('Power spectrum of sinusoidal signal');
grid;
%Logarithmic Spectrum
ln=log(sq);
figure(1);
subplot(235);
plot(f,ln);
xlabel('Frequency (Hz)');
ylabel('log spectrum');
title('Logarithmic spectrum of sinusoidal signal');
grid;
%Use IFFT to restore the original signal
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('Sinusoidal signal waveform converted by IFFT');
grid;
The above is the detailed content of matlab audio processing: program to generate WAV format spectrograms and time domain waveforms. For more information, please follow other related articles on the PHP Chinese website!