Understanding Audioread, 'native' and converting to pascal
8 views (last 30 days)
Show older comments
Hello! I have struggled for a while with this problem and hopes that someone here can push me in the right direction!
I have a wavefile constisting of a recorded calibration signal, the signal is a recorded tone with a sound pressure level of 93.9 dB (~0.99 pascal) at 1000 Hz. The equipment I used to record the file "calibration.wav" has a sensitivity of around 43.9 mV/pascal.
When I use the command
[data, fs] = audioread('calibration.wav');
I get a vector - "data" - with the size 304000x1. Which spans from around -0.43 to +0.43.
This should somehow represent the amplitude of the signal in the time domain - E.g. the output from the microphone relative to the maximum value for the microphone, which in this case is 93.9 dB relative to 102.2 dB. (I could also use 'native' to define "data", but does it matter?)
What I am wondering is, if it is possible to get my known value of ~0.99 pascal (or 93.9 dB) confirmed using the audioread vectors labeled "data" and "fs". I will use this when evaluating other, not known recordings.
How should I approach this problem? Please feel free to ask if there is something unclear.
Best regards
// Hannes
0 Comments
Answers (1)
Walter Roberson
on 30 Jan 2014
I would suggest using the 'native' option in your situation: that should get you the values exactly as they were stored rather than normalized to -1 to +1.
If the readings you get are then in mV, multiply them by the 43.9 to get pascal.
4 Comments
Walter Roberson
on 31 Jan 2014
That doesn't sound right. fft() coefficients can be negative as well, and energy can be encoded in the phase. Perhaps once you take abs() of the fft() ??
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!