How can PLOT the time waveform and its frequency-domain representation using FFT

25 visualizaciones (últimos 30 días)
filename = 'abc.mp3';
audioinfo(filename)
[y,Fs] = audioread(filen);
N = size(y,1);
t = [0:1/Fs:(N-1)/Fs];
f = ([0:1:N-1]/N-0.5)*Fs;
ys = y(:,1); %
plot(t);
  2 comentarios
KSSV
KSSV el 12 de Jun. de 2020
Read the documentation of fft. It is a striaght forward task. It is easy.
CHIN XUAN TEE
CHIN XUAN TEE el 12 de Jun. de 2020
filename = 'abc.mp3';
audioinfo(filename)
[y,Fs] = audioread(filen);
N = size(y,1);
t = [0:1/Fs:(N-1)/Fs];
f = ([0:1:N-1]/N-0.5)*Fs;
ys = y(:,1); %
plot(t);
Y = fft(ys,N);
magnitudeY = abs(Y);
plot(f,magnitudeY);
Is this correct?

Iniciar sesión para comentar.

Respuestas (1)

Surya Talluri
Surya Talluri el 14 de Ag. de 2020
I understand that you want to observe the signal in both time and frequency domain.
You can directly plot the signal in time domain
[y,Fs] = audioread(filename);
N = size(y,1);
t = (0:N-1)/Fs;
plot(t, y)
xlabel('Time(s)')
ylabel('Amplitude')
You can obtain Frequency domain using “fft” function
Y = fft(y,N);
F = ((0:1/N:1-1/N)*Fs).';
magnitudeY = abs(Y); % Magnitude of the FFT
phaseY = unwrap(angle(Y)); % Phase of the FFT
dB_mag=mag2db(magnitudeY);
subplot(2,1,1);
plot(F(1:end/2),dB_mag(1:end/2));
title('Magnitude response of signal');
ylabel('Magnitude(dB)');
subplot(2,1,2);
plot(F(1:end/2),phaseY(1:end/2));
title('Phase response of signal');
xlabel('Frequency in kHz')
ylabel('radians');
You can refer to following Frequency Domain Analysis documentation for further understanding - https://www.mathworks.com/help/signal/examples/practical-introduction-to-frequency-domain-analysis.html

Categorías

Más información sobre Spectral Measurements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by