Está en la página 1de 2

AUDIO CON MATLAB (TRANSFORMADA DE FOURIER)

1. Hallar el espectro de frecuencias de señales senoidales


clear
%parámetros de muestreo
Fs = 1000; % frecuencia de muestreo
T = 1/Fs; % periodo de muestreo
L = 1500; % tamaño de la señal
t = (0:L-1)*T; % vector de tiempo
% creando señales seno de diferentes frecuencias
S =sin(2*pi*50*t) + sin(2*pi*120*t)+0.5*sin(2*pi*400*t);
%graficando
figure
subplot(2,1,1)
plot(1000*t(1:50),S(1:50)) % graficar solo las primeras 50 muestras
title("Señal en el tiempo")
xlabel("t (ms)")
ylabel("X(t)")
% transformada rápida de Fourier
Y = fft(S);
% convirtiendo espectro bilateral en unilaterial
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;
subplot(2,1,2)
plot(f,P1)
title("Señal en la frecuencia")
xlabel("f (Hz)")
ylabel("|P1(f)|")

2. Grabar audio de disposi�vo de entrada y sacar su espectro de frecuencias:


clear
% parámetros de grabación
Fs = 44100;
nBits = 16;
nChannels = 2;
ID = -1; % dispositivo de audio por defecto
recObj = audiorecorder(Fs,nBits,nChannels,ID);
% grabar audio
a= audiorecorder;
recDuration = 5;
disp("Begin speaking.")
recordblocking(a,recDuration);
disp("End of recording.")
% reproducir audio
play(a)
% extraer audio a vector
y = getaudiodata(a);
% graficando
figure
subplot(2,1,1)
plot(y)
title("Señal en el tiempo")
xlabel("t (ms)")
ylabel("X(t)")
% parámetros de transformada de Fourier
L=length(y);
t=(0:(L-1))/Fs; %vector de tiempo
% transformada de Fourier
Y=fft(y);
P2 = abs(Y/L);
P1=P2(1:floor(L/2+1));
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
% graficando
subplot(2,1,2)
plot(f,P1)
title("Señal en la frecuencia")
xlabel("f (Hz)")
ylabel("|P1(f)|")
% guardar como archivo "voz.wav"
audiowrite('voz.wav',y,Fs)

3. Hallar espectro de frecuencias de audio .wav


clear;
%información del archivo de audio
info = audioinfo("4khz.wav")
%abriendo archivo en vector
[y1,fs]=audioread('4khz.wav');
sound(y1,fs) %reproducir sonido
t=linspace(0,length(y1)/fs,length(y1)); %creando vector t de muestras
iguales a duración del audio
% graficando
figure
subplot(2,1,1)
plot(t,y1)
title("Señal en el tiempo")
xlabel("t (s)")
ylabel("X(t)")
% transformada rápida de fourier
Nfft=16777216; %número de muestras de transformada (potencias de 2)
f=linspace(0,fs,Nfft);
P1=abs(fft(y1,Nfft));
% graficando
subplot(2,1,2)
plot(f(1:Nfft/2),P1(1:Nfft/2))
title("Señal en la frecuencia")
xlabel("f (Hz)")
ylabel("|P1(f)|")

También podría gustarte