amplitude of a pink noise wave file

3 ビュー (過去 30 日間)
tony karamp
tony karamp 2013 年 5 月 1 日
Hello all,
I created a pink noise wavfile using Adobe Audition. the wavfile has length of 50 seconds, two channels (I named them Left - Right) and went through a band pass filter of 50-2000Hz (those are the frequencies allowed to pass).
I want to find the amplitude of that signal and then find the corresponding dB level.
What I did so far:
x = abs(Left); %take the absolute values
Ampl_Abs = mean(x); %that should give mean ampl of the signal
find_dB_level = 20*log10(Ampl_Abs); %that should give me the dB level
I wasn't sure that that was the correct approach, so later I tried FFTing the signal and then retrieve all the info, but that gave me different numbers:
NFFT = 2^nextpow2(length(Left));
x = fft(Left,NFFT)/length(Left);
f = fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(Left(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of Left')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
Is there a way to get all that info from Audition straight out? if yes, how?
Which is the best way to find the mean amplitude and the corresponding dB level?
Thank you in advance!

回答 (2 件)

Daniel Shub
Daniel Shub 2013 年 5 月 1 日
You probably do not want the mean unsigned amplitude, but rather the root mean square amplitude. Talking about an unreferenced decibel level is a little strange.

tony karamp
tony karamp 2013 年 5 月 1 日
編集済み: tony karamp 2013 年 5 月 1 日
First of all, thank you for taking the time to reply!
second, I did do that, I am sorry I forgot to mention it. In fact here is the code:
%finds the amplitude
testdB = sqrt(Left.^2);
findAmpl = mean(testdB(1:t5));
%finds the corresponding dB level
findDB = 20*log10(findAmpl);
Is that correct?
  2 件のコメント
Daniel Shub
Daniel Shub 2013 年 5 月 1 日
The interface on answers is a bit tricky, but this should have been a comment to my answer (see the blue Comment on this Answer link), and not an answer (i.e., the big box).
Your method is incorrect.
testdB = sqrt(Left.^2);
is the same as
testdB = abs(Left);
you want to average the squared values:
findAmpl = sqrt(mean(Left(1:t5).^2));
tony karamp
tony karamp 2013 年 5 月 1 日
yes, I see what you mean...
My answer should also be a comment. Oh, well!
Thank you once again.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMultirate Signal Processing についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by