2014-04-06 18 views
6

我有一個代表電機聲音的音頻文件。我一直在閱讀的是「正常」的FFT不提供關於機器的寶貴分析,而且我應該使用階次分析來形容機器的「行爲」。我在增加速度的同時錄製了它的聲音,然後我將這些記錄放在一起並計算出它的譜圖。下面是該代碼:如何在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'); 

,結果是這樣的:

Spectogram

正如你可以看到,我增加了機器的運行速度由5對每個時間點。我的問題是如何計算這個系統的順序分析!? 非常感謝您的幫助!

+0

要執行訂單分析,您通常需要知道機器的轉速。您是否有電機上的轉速計或每旋轉一圈的傳感器,您可以同時記錄振動信號? – Max

+0

不,我只能聽機器 – Engine

+0

您是否在測量過程中控制速度,或者您只需要拿到您所得到的東西?速度有多穩定 – Max

回答

2

這是一個多關於編程的問題是一個科學問題的。可以使用傅里葉變換完成順序分析。您所需要做的就是在輸出中尋找對角線,即噪聲頻率與旋轉速度成正比的地方。

在您的示例圖像存在從2000赫茲在時間(速度)這樣的命令0到4000Hz在時間(速度)150之後它似乎向下反射,可能採樣不足的假象。

所以其順序是什麼呢?爲此,您需要知道您似乎不知道的電機旋轉速度。在時間(速度)0時,還有另一個從3000Hz開始的較弱的訂單。通過兩個或多個可見訂單,您可能能夠推斷出電機的轉速(通過要求頻率爲原始速度的整數倍) 。

反正代碼可能不需要除了一個較高的頻率分辨率進行更改。

+0

首先感謝您的回答,但是您推斷電機的旋轉速度的意思是什麼,請問您如何在問題示例中做到這一點? – Engine

+0

這個想法是噪音頻率與電機的轉速成正比。對於你不知道的單一對角線:可能是兩倍,可能是電動機轉速的五倍。但它是一個整數。但是,對於兩條或更多對角線,您可以得到許多等式,您可以假設整數爲比例因子。 – Trilarion

+1

@Engine我對你的問題感興趣,這就是爲什麼我給了一個賞金。現在,正如一些人所指出的那樣,問題更多的是信號處理而不是編碼,考慮將其發佈到dsp站點或帶有「聲學」標籤的物理站點。 –