I have continuous A-weighted sound pressure level (SPL) values at 1 minute time resolution (LAeq,1min
). I would like to calculate LAeq
SPL at half-hourly
and hourly resolutions
using these values. Can someone suggest on how this could be achieved?
-
$\begingroup$ average over 30 minutes or 60 minutes or take the max value in 30 minutes or 60 minutes. $\endgroup$– Solar MikeApr 9, 2020 at 9:13
-
1$\begingroup$ Care to post as a proposed answer with equations? $\endgroup$– khajlkApr 9, 2020 at 9:34
-
$\begingroup$ No, because if I do it in my program you will want it in another. So, now you have the idea you can implement it. $\endgroup$– Solar MikeApr 9, 2020 at 9:40
2 Answers
Leq represents the time weighted average. So isn't it just:
$$Leq (hour) = \frac{1}{60}\sum_{n=1}^{60}Leq(minute_{n})$$
You can find from various sources online or on textbooks that $L_{eq}$ is calculated as
$$ L_{eq} = 10 \log_{10} \left(\frac{1}{T} \int_{0}^{T} 10^{L \left( t \right)/10} dt \right) \tag{1}\label{1}$$
where $T$ is the measurement duration and $t$ represents time. Please note that $10^{L \left( t \right)/10} = P \left( t \right)$, with $P \left( t \right)$ the power of the sound. Thus, equation \eqref{1} can also be written as
$$ L_{eq} = 10 \log_{10} \left(\frac{1}{T} \int_{0}^{T} P \left( t \right) dt \right) \tag{2} \label{2}$$
We can now solve for the part inside the parentheses. This would result to
$$ L_{eq} = 10 \log_{10} \left( \frac{1}{T} \int_{0}^{T} P \left( t \right) dt \right) \implies \frac{L_{eq}}{10} = \log_{10} \left( \frac{1}{T} \int_{0}^{T} P \left( t \right) dt \right) \implies \\ \implies 10^{L_{eq}/10} = \frac{1}{T} \int_{0}^{T} P \left( t \right) dt \implies T \cdot 10^{L_{eq}/10} = \int_{0}^{T} P \left( t \right) dt\tag{3}\label{3}$$
Since you can find the power integral corresponding to each $L_{eq}$, all you have to do then is to sum the power up and divide by the total duration and convert to dB. One step at a time. Summing up the integrals of equation \eqref{3} you get (where the limits of the integrals are in seconds)
$$ \int_{0}^{60} P \left( t \right) dt + \int_{60}^{120} P \left( t \right) dt + \int_{120}^{180} P \left( t \right) dt + \ldots + \int_{3480}^{3540} P \left( t \right) dt + \int_{3540}^{3600} P \left( t \right) dt = \int_{0}^{3600} P \left( t \right) dt$$
where we have used the known equality from calculus (from right to left)
$$ \int_{a}^{c} f \left( x \right) dx = \int_{a}^{b} f \left( x \right) dx + \int_{b}^{c} f \left( x \right) dx, ~~~~~ a < b < c \tag{4} \label{4}$$
Now, in order to calculate the corresponding one-hour $L_{eq}$ you have to first divide with the total duration ($3600$ seconds this is) and then convert to deciBel. So, for our numbers this is
$$ L_{eq, tot} = 10 \log_{10} \left( \frac{1}{3600} \int_{0}^{3600} P \left( t \right) dt \right) $$
where you will use the result from the power integral summation in the logarithm.
Notes
There are some things to note here.
- You most probably won't have the power function but you will acquire the integral values directly from the measured $L_{eq}$ values with the aid of equation \eqref{3}.
- You most probably be working in the digital domain, where all integrals should be converted to sums. So, for example, equation \eqref{2} should be written $$ L_{eq} = 10 \log_{10} \left(\frac{1}{N} \sum_{n = 1}^{N} x \left(\left[ n \right] \right)^{2} \right) \tag{5} \label{5}$$ where $N$ is the number of samples in your signal vector, $n$ is the sample index in the range $\left[ 1, N \right]$ and $x \left[ n \right]$ is the sample values. Please note that they are squared since power is proportional to the square of the signal amplitude. This should be used in case you have to calculate the power from time-series measurements.
- In a similar manner you can calculate the half-hour $L_{eq}$, or any other duration for this purpose.
- Please keep in mind that in this approach it is assumed that the measured $L_{eq}$ values are taken in consecutive time intervals and this is the sum of the power integrals results from equation \eqref{4}. If the noise you measure is (wide sense) stationary then the results should be fairly close (in engineering accuracy) whether the measurements are taken in consecutive intervals or not. Otherwise, you may encounter significant deviations.
I assume you can do the coding part of this fairly simple algorithm (only exponentials, multiplication, addition and logarithms are involved, which are readily available in pretty much every programming language) on yourself. If not, I believe you could ask in either Signal Processing SE, Computational Science SE or some other programming related SE site.