What is wrong in this 1/3 Octave analysis procedure?

28 vues (au cours des 30 derniers jours)
Alisson
Alisson le 27 Mai 2014
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 commentaire
Royi Avital
Royi Avital le 24 Nov 2014
Which MATLAB function is used to create this 1/3 Octave filter bank?

Connectez-vous pour commenter.

Réponses (3)

Star Strider
Star Strider le 27 Mai 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 commentaires
Alisson
Alisson le 28 Mai 2014
Hi man. It didn't work out. See! The problem is that the value that I use for the reference pressure doesn't change the result, once firstly I convert the values in dB in the time domain to obtain the pressure then I calculate the amplitude in dB in the frequency domain, all this using the same reference pressure. For example: from the points in dB of the red curve I evaluate p=p0*10^(amplitude_dB/20). I use this vector as input of the filters and then evaluate the amplitude in the frequency domain by using amplitude_dB=10*log10(prms^2/p0^2). I mean if I use the same value of reference pressure in both equations the result is the same independentely of the value that I put.
Probably you are pretty busy but if you have some time could you take a quick look in the matlab code which I've used to get the 1/3 Octave Bands? could you give me your email or is there any other way for me to show you this file? It is really short it won't take long. thanks in advance
Star Strider
Star Strider le 28 Mai 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?

Connectez-vous pour commenter.


Alisson
Alisson le 28 Mai 2014
Hi man.Yep. I have done tests with sinus wave, white noise, pink noise etc.. It works well. I also did't think the problem is in the filter. It is probably, as you said, in the way I am handling the data. I can't see tough. The measurement was done in an anechoic chamber and this 20dB is the background noise. See... I will put in attachment my data and the program in Matlab. If you can just take a look whenever you have time it would be really helpful.
The excel file is the INPUT data measured with the sound level meter ( first column- the pressures that i have calculated as i said before and second column- the amplitude in dB gotten from the sound level meter).
The word file is exactly the question I have posted here.
The .m files - NoiseControl.m is the main file. The others are just functions it uses.
Thank you very much even if you don't have time. you have helped a lot.
  3 commentaires
Alisson
Alisson le 29 Mai 2014
See. I couldn't find a lot of works doing what I am doing. Probably because there are a lot of softwares out there doing this process.In attachment, you will see the software's brochures showing this procedure and some results. I don't think this will be really helpful. Anyway, Thank you very much man. It is very nice from you. I will keep trying here.
Alisson
Alisson le 29 Mai 2014
The other files.

Connectez-vous pour commenter.


Jerome
Jerome le 28 Avr 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).

Catégories

En savoir plus sur Measurements and Spatial Audio dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by