
獲取了聲音的波形 進行FFT變換, FFT變換后X軸與Y軸各代表什么意思呢?
轉完的 x 軸是 frequency,y 軸可以是 magintude or power level.
所以0dB表示你量到的數值跟那種信號的ref.(基底) 值一樣大。 Help有說明到的聲壓的 ref值是被定義為 pref is 20 µPa。
下面跟你分享得再更詳細些 :
Help 裡鍵入「dB」,點選「Measuring Sound Pressure」 可在右邊畫面看到LabVIEW裡所提供的公式。
依Power或Amplitude,算法略有不同。 (當然仍是同一條,只要你清楚就scale而言 Power 就是Amplitude的平方 )
dB = 10 log (Power Ratio) ; Power Ratio = P1/P0
dB = 20 log (Amplitude Ratio) ; Amplitude Ratio = A1/A0
其中,P1、A1為measured power & amplitude,P0、A0為 reference power & amplitude。
Pi = Ai ^2。
dB measurement 的意義是「purely relative」的。 dB視你所量測的訊號類型,具「相對的大小意義」。
0dB表示你量到的訊號大小跟這種訊號的ref.值一樣大。
不同型式的自然界訊號有不同的通用ref.數值大小。可查表而得。
而dBm是特別針對電壓power而言的「dB」。另外還有dBZ、dBk、dBi…等等。
可參考WIKI: http://en.wikipedia.org/wiki/Decibel#cite_note-2
就聲壓而言,dB的表示法是根據人耳聽覺所能感受到的程度以log 作為scale呈現。
式子為Amplitude的那條 => SPL = 20 log10 (p/pref)。
這時,
0dB代表「average threshold of human hearing」,而60~70dB 代表對人耳而言比較normal的範圍。
當然這些都是依據統計數據作為基礎。
今天如果你量測的是 聲壓 (Power)的 話,ref、基底就是20μ,
而0dB表示你量測到的「波形數值大小」就是 20μpa ( pa是單位)! 相當於一隻蚊子距離你三公尺飛時的聲音大小。
-----------------------------------
-----------------------------------
振動加速度和分貝的轉換公式(????這個是經驗公式??? 適用性)
A: m/s^2 (注意單位,通常實際使用的是mm/s^2)
B: dB
B=20*log(A/0.000316)
A=10^(B/20)*0.000316
------------------------------------------
Matlab 使用 FFT 進行頻譜分析
下面的示例說明了如何使用 FFT 函數進行頻譜分析。FFT 的一個常用場景是確定一個時域含噪信號的頻率分量。
首先創建一些數據。假設是以 1000 Hz 的頻率對數據進行的采樣。首先為數據構造一條時間軸,時間范圍從 t = 0 至 t = 0.25,步長為 1 毫秒。然后,創建一個包含 50 Hz 和 120 Hz 頻率的正弦波信號 x。
t = 0:.001:.25; x = sin(2*pi*50*t) + sin(2*pi*120*t);
添加一些標准差為 2 的隨機噪聲以產生含噪信號 y。然后,通過對該含噪信號 y 繪圖來了解該信號。
y = x + 2*randn(size(t));
plot(y(1:50))
title('Noisy time domain signal')

很明顯,通過觀察該信號很難確定頻率分量;這就是頻譜分析為什么被廣泛應用的原因。
得到含噪信號 y 的離散傅里葉變換很容易;執行快速傅里葉變換 (FFT) 即可實現。
Y = fft(y,251);
使用復共軛 (CONJ) 計算功率譜密度,即測量不同頻率下的能量。為前 127 個點構造一個頻率軸,並使用該軸繪制結果圖形。(其余的點是對稱的。)
Pyy = Y.*conj(Y)/251;
f = 1000/251*(0:127);
plot(f,Pyy(1:128))
title('Power spectral density')
xlabel('Frequency (Hz)')

放大並僅繪制上限為 200 Hz 的圖形。請注意 50 Hz 和 120 Hz 下的峰值。以下是原始信號的頻率。
plot(f(1:50),Pyy(1:50))
title('Power spectral density')
xlabel('Frequency (Hz)')

