// FFT1 Mittelwert mode(0); // Hier werden WAV Dateien analysiert // Die Abtastrate muss 48000 sein // Es wird nur 1 Kanal analysiert // Überdeckung der Analyse 87,5 // // // mclose('all'); clear; xdel(); // WAV Datei auswählen [dateiname,pfad]=uigetfile('*.wav','D:\Mdaten'); //WAV Datei wählen if isequal(dateiname,0); //Ist eine Date gewählt? // else // fe=pfad+'\'+dateiname; //Vollständigen Pfad erstellen info = wavread(fe,'info'); //WAV Info`s laden fd=fileinfo(fe); //Datei Info`s laden disp('////////////////////////////////////////////////////////////') disp('WAV-Datei: '+fe); //Ausgabe vollständiger Pfad p='Kanäle: '+string(info(2)); //Ausgabe Anzahl der Kanäle disp(p); //Ausgabe Anzahl der Kanäle p='Samplerate: '+string(info(3)); //Ausgabe Samplerate disp(p); //Ausgabe Samplerate p='Dateilänge : '+string(fd(1)); //Ausgabe Dateilänge disp(p); //Ausgabe Dateilänge p='Laufzeit : '+string(info(8)/info(3)); //Laufzeit in Sek. disp(p); //Laufzeit in Sek. disp('////////////////////////////////////////////////////////////') if info(3)==48000 then //Stimmt die Samplerate der Audiodatei? samplmax=info(8); //Dateilänge als Obergrenze erfassen ///////////////////////////////////////////// start1=1; //Erstes Byte des Rechenzyklus start2=48000; //Letztes Byte des Rechenzyklus************************ ueberdeckung=6000;//Überdeckungsabstand teiler=1;//Amplitudengröße //=============================================================== kanal=1; //Nummer des Kanals der analysiert wird. frequ1=1; //Die FFT wird von dieser Frequenz an berechnet********** frequ2=500; //Die FFT wird bis zu dieser Frequenz berechnet************ //=============================================================== yF=wavread(fe,[start1 start2]); //Bytes für nächsten Rechnzyklus // // window funktion berechnen hanning yW=window('hn',start2); yFW=yW.*yF(kanal,:); // yFFT=fft(yFW); //Die FFT wird berechnet yFFT=real(yFFT); yFFT=abs(yFFT); yFFT=yFFT/teiler; // start1=start1 + ueberdeckung; //Der Startpunkt für den nächsten Zyklus start2=start2 + ueberdeckung; //Der Endpunkt für den nächsten Zyklus // powerspektrum w=1; //Zähler für das Ergebnis Array // alles(w,frequ1:frequ2)=yFFT(frequ1:frequ2); //Ergebnisse ins Array // alle folgenden berechnen while start2