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

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 commentaires

Read the documentation of fft. It is a striaght forward task. It is easy.
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?

Connectez-vous pour commenter.

Réponses (1)

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

Catégories

En savoir plus sur Get Started with Signal Processing Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by