Interpolate the EDT to get the reverberation time.
(energyDecay, energyVector, upperLim, lowerLim)
| 1495 | |
| 1496 | # @njit |
| 1497 | def reverb_time_regression(energyDecay, energyVector, upperLim, lowerLim): |
| 1498 | """Interpolate the EDT to get the reverberation time.""" |
| 1499 | if not np.any(energyDecay): |
| 1500 | return 0 |
| 1501 | first = np.where(10*np.log10(energyDecay) >= upperLim)[0][-1] |
| 1502 | last = np.where(10*np.log10(energyDecay) >= lowerLim)[0][-1] |
| 1503 | if last <= first: |
| 1504 | # return np.nan |
| 1505 | return 0 |
| 1506 | X = np.ones((last-first, 2)) |
| 1507 | X[:, 1] = energyVector[first:last] |
| 1508 | c = np.linalg.lstsq(X, 10*np.log10(energyDecay[first:last]), rcond=-1)[0] |
| 1509 | return -60/c[1] |
| 1510 | |
| 1511 | |
| 1512 | def reverberation_time(decay, listEDC): |
no outgoing calls
no test coverage detected