Heim > Artikel > Computer-Tutorials > Matlab-Audioverarbeitung: Programm zum Generieren von Spektrogrammen im WAV-Format und Zeitbereichswellenformen
Hallo%, dieses Programm liest die Datei mywav.wav und zeigt dann das Spektrum und die Wellenform an. Beachten Sie, dass die Datei mywav.wav nicht zu lang sein sollte, da der Vorgang sonst sehr langsam wird.
[y,Fs,bits]=wavread('mywav.wav'); % Lesesignal, Abtastrate und Anzahl der Abtastbits.
y=y(:,1);%Ich gehe hier davon aus, dass Ihre Stimme binaural ist. Wenn Sie einen anderen Kanal analysieren möchten, ändern Sie ihn bitte in 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)');
Geben Sie mir ein Beispiel, ändern Sie es einfach selbst
fs=1000;% eingestellte Abtastfrequenz
N=1024;% eingestellte Datenlänge
i=0:N-1;
t=i/fs;
f=100;% legt die Frequenz des Sinussignals fest
%Sinusförmiges Signal erzeugen
x=sin(2*pi*f*t);
subplot(231);
plot(t,x); % erstellt die Zeitbereichswellenform des Sinussignals
axis([0,0.01,-1,1]);
xlabel('t');
ylabel('y');
title('Sinusförmige Signal-Zeitbereichswellenform');
Gitter;
%Führen Sie eine FFT-Transformation durch und erstellen Sie ein Spektrogramm
y=fft(x,N); % führt eine FFT-Transformation durch
mag=abs(y);% Amplitude
f=(0:N-1)*fs/N; Der Ausdruck der % Abszissenfrequenz ist f=(0:M-1)*Fs/M;
subplot(232);
plot(f,mag);% ein Spektrogramm erstellen
axis([0,100,0,80]);
xlabel('Frequenz (Hz)');
ylabel('magnitude');
title('Sinussignalamplituden-Spektrumdiagramm');
Gitter;
% quadratisches Mittelwertspektrum
sq=abs(y);
Abbildung(1);
subplot(233);
plot(f,sq);
xlabel('Frequenz (Hz)');
ylabel('quadratisches Spektrum');
title('Root Mean Square Spectrum of Sinusoidal Signal');Gitter;
% Leistungsspektrum
Leistung=Quadrat^2;
Abbildung(1);
subplot(234);
plot(f,power);
xlabel('Frequenz (Hz)');
ylabel('Leistungsspektrum');
title('Sinusförmiges Signalleistungsspektrum');
Gitter;
% logarithmisches Spektrum
ln=log(sq);
Abbildung(1);
Nebenhandlung(235);
plot(f,ln);
xlabel('Frequenz (Hz)');
ylabel('log-Spektrum');
title('Logarithmisches Spektrum des Sinussignals');
Gitter;
% Verwenden Sie IFFT, um das ursprüngliche Signal wiederherzustellen
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
Nebenhandlung(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('Sinusförmige Signalwellenform konvertiert durch IFFT');
Gitter;
Das obige ist der detaillierte Inhalt vonMatlab-Audioverarbeitung: Programm zum Generieren von Spektrogrammen im WAV-Format und Zeitbereichswellenformen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!