Hello, for a final project I am doing a menu with the notes do, re and mi. The problem is that when I apply the Fourier transform fft, my spectrum looks very weird. Does anyone know if I'm doing anything wrong? Code: do=audioread('do.wav'); sound(do,44100) nota=audiorecorder(44100,16,1); disp('Grabando...') recordblocking(nota,4) disp('Listo.') bb=getaudiodata(nota); audiowrite('grabacion.wav',bb,88200) audio=audioread('grabacion.wav'); audiof=fft(audio); subplot(2,1,1); plot(audio) subplot(2,1,2); plot(audiof) sound(audio,44100) Image:

2 comentarios

Salvador Salas Bonilla
Salvador Salas Bonilla el 14 de Nov. de 2017
Jan
Jan el 14 de Nov. de 2017
Please format your code using the "{} Code" button, such that it is readable. Attach images directly in the forum using the "Image" button instead of an external file hoster. Thanks.

Iniciar sesión para comentar.

 Respuesta aceptada

Star Strider
Star Strider el 14 de Nov. de 2017

0 votos

In the plot you posted, you are plotting the real and imaginary parts of the two-sided Fourier transform. You need to plot the magnitude (absolute value, using the abs function) instead.
A single-sided Fourier transform is easier to understand. See the documentation on the fft (link) function for details on correctly plotting a one-sided Fourier transform.

2 comentarios

Salvador Salas Bonilla
Salvador Salas Bonilla el 14 de Nov. de 2017
It was this, thank you very much! This was my first question here so I didn't know how to paste the code properly.
Star Strider
Star Strider el 14 de Nov. de 2017
As always, my pleasure!
No worries — we were all new here once.

Iniciar sesión para comentar.

Más respuestas (1)

Jan
Jan el 14 de Nov. de 2017

1 voto

Did you read the documentation of fft. There you find an example for plotting:
Y = fft(audio);
L = length(audio);
FS = 44100;
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
plot(f,P1)

1 comentario

Nuchto
Nuchto el 17 de Dic. de 2017
Thanks for this. Why did you divide by the L (length) when taking the magnitude?

Iniciar sesión para comentar.

Categorías

Más información sobre Fourier Analysis and Filtering en Centro de ayuda y File Exchange.

Preguntada:

el 14 de Nov. de 2017

Comentada:

el 17 de Dic. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by