I have an audio file that gives me a long vector when I read it.I am asked to integrate the response over a specific time. My approach is to calculate time 'x' at which the vector reaches its 'ith'element. and then I will integrate it over the time. Can anyone guide

 Akzeptierte Antwort

Star Strider
Star Strider am 30 Aug. 2017

3 Stimmen

To integrate a vector, use the trapz (link) or cumtrapz (link) function, depending on the result you want.
You probably need to calculate a time vector as well. Since audio files are column-major matrices (each column is a different channel), this will work to calcualte the time vector, with ‘y’ being your sound file, and ‘Fs’ your sampling frequency:
tv = linspace(0, size(y,1), size(y,1))'/Fs;

6 Kommentare

Fourier
Fourier am 30 Aug. 2017
So you mean tv is my time vector and I can simply integrate over time , let's say t=2 then y= 2/Fs*trapz(Input)
Yes, ‘tv’ is your time vector.
I was thinking more along these lines:
y_int = trapz(tv, y);
to integtrate the entire vector, or perhaps:
y_int_2 = trapz(tv(tv <= 2), y(tv <= 2));
to integrate up to ‘tv=2’, or:
y_int = cumtrapz(tv, y);
y_int_2 = y_int(find(tv <= 2, 1, 'last'));
to integrate up to ‘tv=2’.
Fourier
Fourier am 30 Aug. 2017
okay many thanks, so finally can you tell how to integrate from tv=2 to tv=4
Variations on any of the previous syntaxes will work.
One option:
y_int = cumtrapz(tv, y);
y_int_2_4 = y_int(find(tv <= 4, 1, 'last')) - y_int(find(tv <= 2, 1, 'last'));
This is probably more efficient than doing the entire trapz calculation for every interval of interest. I didn’t time it.
Peter Druzba
Peter Druzba am 20 Okt. 2019
Thanks, very helpfully !
Star Strider
Star Strider am 21 Okt. 2019
@Peter Druzba — My pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by