Hello Community;
when I use the function [Lt,Leq,Lpeak,Lmax] = SPL(recording_vector) it returns vectors containing (partially or completely) -inf values. Surprisingly when I re-Run the same line I get usual numeric values. how is this possible? how to avoid it?
Thanks

2 Kommentare

Chunru
Chunru am 2 Sep. 2022
Can you show your data (a portion) or your code?
It is likely due to the signal amplitude to be 0 so log of it becomes -inf.
Thanks a Lot Chunru, I am attaching the file to this comment.
calib=importdata('calib.mat')
IRS=importdata('IRS.mat')
spl = splMeter("CalibrationFactor",calib, ...
"FrequencyWeighting","Z-weighting", ...
"TimeWeighting","Fast", ...
"TimeInterval",0.125, ...
"SampleRate",FS,...
"Bandwidth","1 octave");
[Lt,Leq,Lpeak,Lmax] = spl(IRS)

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Jimmy Lapierre
Jimmy Lapierre am 7 Sep. 2022

1 Stimme

Leq, Lpeak and Lmax are only computed every TimeInterval, so they correspond to the SPL of zero for the first 0.125 seconds. And as chunru said, that corresponds to -Inf. When you call spl a second time, you are already pass the first 0.125 seconds of pure silence.
To avoid it, either discard the fist 0.125 seconds, or set a minimum value you prefer.
For example set any value below -100 dB (including -Inf) to -100:
Leq(Leq<-100)=-100;

Weitere Antworten (0)

Kategorien

Mehr zu Measurements and Spatial Audio finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by