2014-04-06 18 views
6

Ich habe eine Audiodatei, die das Geräusch eines Motors darstellt. Ich habe gelesen, dass das "normale" fft keine wertvolle Analyse über die Maschine liefert, und dass ich die Bestellanalyse verwenden sollte, um das "Verhalten" der Maschine zu beschreiben. Ich habe seinen Sound aufgenommen, während ich seine Geschwindigkeit erhöht habe, und ich habe die Aufzeichnungen zusammengefügt und das Spektrum berechnet. Hier ist der Code für das:So implementieren Sie die Bestellungsanalyse in MATLAB

%% read the Audio file and plot its 
clear, clc , clf; 
M = 512; 
k =1 
data= 0 ; 
    for i =100:5:180 
    fileName =['A10_uSp0_Mic100k_2nd_V_',int2str(i),'.wav'] 
    [x(:,k),Fs] = audioread(fileName); 
    k = k+1 ; 
end 
for i = 1:length(x(1,:)) 
    data = [data(:);x(:,i)]; 
end 
k = length(x(1,:)); 
    while k ~= 2 
    data = [data(:);x(:,k)]; 
    k = k -1; 
    end 
spectrogram(data,hamming(M),M/2,0:20:4000,Fs,'yaxis'); 

und das Ergebnis sieht so aus:

Spectogram

Wie Sie sehen vielleicht in der Lage, ich die Geschwindigkeit der Maschine erhöht um 5 für jeden Zeitpunkt. Meine Frage ist, wie man die Bestellanalyse für dieses System berechnet !? Vielen Dank für jede Hilfe!

+0

Um eine Auftragsanalyse durchzuführen, müssen Sie in der Regel die Drehzahl der Maschine kennen. Haben Sie einen Drehzahlmesser oder einen Sensor pro Umdrehung am Motor, den Sie gleichzeitig mit dem Vibrationssignal aufzeichnen können? – Max

+0

Nein Ich habe es nicht, ich darf nur die Maschine hören – Engine

+0

Kontrollieren Sie die Geschwindigkeit während der Messung, oder müssen Sie nur nehmen, was Sie bekommen? Wie stabil ist die Geschwindigkeit – Max

Antwort

2

Dies ist eher eine wissenschaftliche Frage als eine Frage zur Programmierung. Die Auftragsanalyse kann mithilfe der Fourier-Transformation durchgeführt werden. Alles, was Sie tun müssen, ist die Suche nach diagonalen Linien in der Ausgabe, d.h. wo die Frequenz des Rauschens proportional zur Rotationsgeschwindigkeit ist.

In Ihrem Beispielbild gibt es eine solche Reihenfolge von 2000 Hz zur Zeit (Geschwindigkeit) 0 bis 4000 Hz zur Zeit (Geschwindigkeit) 150. Danach scheint es nach unten reflektiert, wahrscheinlich ein Artefakt unzureichender Probenahme.

Also welche Reihenfolge ist es? Dazu müssen Sie die Drehzahl des Motors kennen, die Sie nicht zu kennen scheinen. Es gibt auch eine andere schwächere Ordnung, die bei 3000 Hz zur Zeit (Geschwindigkeit) 0 beginnt. Mit zwei oder mehr sichtbaren Ordnungen können Sie möglicherweise die Drehgeschwindigkeit des Motors ableiten (indem die Frequenzen ganzzahlige Vielfache der ursprünglichen Geschwindigkeit sein müssen) .

Trotzdem muss der Code wahrscheinlich nicht geändert werden, außer für eine höhere Frequenzauflösung.

+0

zuerst danke für deine antwort, aber was meinst du mit der drehzahl des motors abzuleiten, wie du das fragst beispiel machen wirst? – Engine

+0

Die Idee ist, dass die Geräuschfrequenz proportional zur Drehzahl des Motors ist. Für eine einzelne diagonale Linie weiß man nicht: könnte zweimal sein, könnte fünf mal die Drehzahl des Motors sein. Aber es ist eine ganze Zahl. Für zwei oder mehr diagonale Linien erhalten Sie jedoch eine Anzahl von Gleichungen, die Sie lösen können, indem Sie ganzzahlige Zahlen für die Proportionalitätsfaktoren annehmen. – Trilarion

+1

@Engine Ich war an Ihrem Problem interessiert und deshalb habe ich eine Prämie platziert. Wie einige nun zeigen, geht es bei der Frage mehr um die Signalverarbeitung als um die Codierung, über die Platzierung auf der dsp-Site oder die Physikseite mit dem Tag "acoustics". –

Verwandte Themen