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)|")