What is wrong in this 1/3 Octave analysis procedure?
27 views (last 30 days)
Show older comments
Hi dears, Good Morning!
I am new in signal processing and I am trying to do a work in noise control of an electronic steering lock device (ESL). My aim is to calculate the loudness (Zwicker Method- ISO 532 B) of this device. To do so, first I need to obtain the 1/3 octave spectrum of a time signal that I measure with a microphone. The problem is I keep getting negative values in dB for the 1/3 Octave bands after filtering the signal in the time domain to obtain the spectrum. I will explain here the procedure I have used and hope that anyone sees what I am doing wrong. Thanks in advance.
I have done the following procedure by now:
1- Sampled the noise signal (impulsive noise) by using a microphone and a data logger (to record the data), which has a sample frequency of 50K Hz. Then, after this step I have a Curve that it is Amplitude (dBA) vs time (s), as shown below. Once the (dBA) value of a sound level meter is calculated by 10*log10(p^2/p0^2), where p0 is 20e-6 Pa. I am able to evaluate the pressure variation (Pa) vs time and use it as INPUT of the 1/3 Octave filters.
2- I get the vector INPUT (with 250000 points of pressure (Pa)-measurements of 5s) and use a function in matlab, in order to filter the signal in each each 1/3 octave band.
3- Then, the program calculates the rms value of the OUTPUT (after filtering). And this is the value that represents each frequency band.
4- Finally, I use the same expression used before to calculate the Magnitude in dB for each 1/3 Octave band. 10*log10(p^2/p0^2), where p0 is 20e-6 Pa.
The thing is the obtained 1/3 Octave is lower than 0 dB and this doesn't make sense once I can hear the noise when I run the device, moreover it doesn't make sense to calculate the loudness following the ISO 532 B if we have negative third octave bands. It seems like the pressure that I have in time domain that is higher, then the reference pressure somehow is attenuated and gets lower than the reference pressure after filtering.
Does anybody know what i am doing wrong?
1 Comment
Answers (3)
Star Strider
on 27 May 2014
Negative dB values indicate p<p0, so I suggest you look at your data and your reference datum. Is p0 = 20e-6 Pa an appropriate reference for your data?
Your signal processing seems to be a well-established procedure, and it if has worked in other applications, I wouldn’t suspect it of being the cause of your problems.
That you can hear the noise says nothing about your instrumentation or experimental set-up. It simply means you have good hearing.
6 Comments
Star Strider
on 28 May 2014
The 1/3 octave bands you plotted look good. They appear stable and with the appropriate stop-band attenuation. I don’t believe they are the problem. Have you used them before successfully? If you believe they could be the problem, run a broad-band test signal through your filters (the ‘rand’ function works for this) and calculate the transfer function from the fft of the input and output. If that looks as it should (I suspect it will) your filters are not the problem.
Your baseline is +20 dB, and your maximum pressure is +55 dB, meaning you have +35 dB of pressure change.
Does p0 correspond to +20 dB? Should you do a baseline correction first, or have you already done that?
I still suspect a calibration problem or data conversion error somewhere, not with your filters. Plot your raw data. Are the pressure units and magnitude appropriate? Have you controlled for ambient barometric pressure if that is important in your calculations? Is you microphone calibrated?
Jerome
on 28 Apr 2016
I'm sure this won't help the original questioner, but I think the problem is that he's trying to filter the logarithm (dB are log scale) of the squared amplitude of the signal, and not the signal itself. He needs to take the data before conversion to amplitude vs. time, and filter that, then perform the amplitude extraction (squaring and lowpass filtering).
See Also
Categories
Find more on Measurements and Spatial Audio in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!