MATLAB Answers

amplitude of a pink noise wave file

6 views (last 30 days)
tony karamp
tony karamp on 1 May 2013
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!

  0 Comments

Sign in to comment.

Answers (2)

Daniel Shub
Daniel Shub on 1 May 2013
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.

  0 Comments

Sign in to comment.


tony karamp
tony karamp on 1 May 2013
Edited: tony karamp on 1 May 2013
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 Comments

Daniel Shub
Daniel Shub on 1 May 2013
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 on 1 May 2013
yes, I see what you mean...
My answer should also be a comment. Oh, well!
Thank you once again.

Sign in to comment.