Finding max value and its index
Mostrar comentarios más antiguos
So, here is the problem.
I have a wav file (attached), one tuts piano sound, and I analyzed it. Using this.
[wave,fs] = audioread('file01.wav');
n=length(wave)-1;
figure
t=0:1/fs:n/fs;
subplot(3,1,1), plot(t,wave)
subplot(3,1,1), xlabel('Time (Second)')
subplot(3,1,1), ylabel('Amplitude')
f=0:fs/n:fs;
wavefft=abs(fft(wave));
subplot(3,1,2), plot(f,wavefft)
subplot(3,1,2), xlabel('Frekuency (Hz)')
subplot(3,1,2), ylabel('Magnitude')
[max_value, index] = max(wavefft(:));
subplot(3,1,3), plot(f,wavefft)
subplot(3,1,3), axis([0 index 0 max_value])
The output is like this.

When I search max value using
[max_value, index] = max(wavefft(:));
I got this. Surely the peak would be on the right side, right?

When I inspect it, the max_value is in index 1111 Hz.
But when I zoom in manually, it's on index 740 Hz.

Did I do something wrong?
1 comentario
Star Strider
el 12 de Jun. de 2014
Seems you did everything correctly. The data in ‘subplot(3,1,3)’ is correct.
Explore the documentation on fft to understand why. (See the documentation on fftshift to understand the reason subplot(3,1,2) is misleading you.)
Respuesta aceptada
Más respuestas (1)
Malcolm Hawksford
el 19 de Dic. de 2017
0 votos
Lets assume you have a stereo .wav file and simply want to find the peak amplitude and sample index (time domain) in each channel. Assume the file is called Cohen.wav then this works for me: [p q]=max(abs(audioread('Cohen.wav'))); p gives the peak values and q the corresponding indices.
Categorías
Más información sobre Bartlett en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
