Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
3. Simulacin en Matlab
Para poder desarrollar y obtener los factores Ck se utiliz la funcin dada en clase
llamada fds
CDIGO DE LA FUNSIN fds
a) Audio Ballena
clc, clear all, close all
[y,Fs]=audioread('ballena.mp3'); % Se realiza la lectura de el archivo de audio
y1=y(:,1); % Se selecciona una sola banda del audio para realizar el analisis
aux=1; % Creo una variable auxiliar que funcionara como contador
N=fix(0.1*Fs); % Obtengo el numero de puntos a evaluar
aux2=N; % aux 2 otra variable auxiliar que funcionara como separador de
fragentos de cancion
h=1; % Variable auxiliar para controlar el aumento de variable "l"
l=1; % Variable auxiliar utilizada para graficar solo ciertos fragmentos
for i=1:65 % Lazo for para realizar el analisis de 65 partes de la cancion
y_25=y1(aux:N); % Extraigo cierto intervalo de la cancion
xk=dfs(y_25',aux2); % Llamo a la funcion dfs
espectro_amplitud=abs(xk); % Obtengo los modulos de xk obteniendo el espectro
f=linspace(0,Fs,aux2); % Creo vector de frecuencias
if i==(5*l) %Condicional para solo graficar ciertos intervalos de tiempo
figure
subplot(2,1,1) % Parametros para graficar el resultado en funcion del tiempo
plot(y_25')
grid on;
xlabel ('Tiempo (s)');
ylabel(' Amplitud');
title('ANALISIS DE TIEMPO BALLENA ');
subplot(2,1,2) % Parametros para graficar el resultado en funcion del tiempo
plot(f,espectro_amplitud)
axis([0 length(f)/2 -10 max(espectro_amplitud)+10]); % Creo ejes de graficacin
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA BALLENA ');
end
r=max(espectro_amplitud); % Obtengo el valor maximo modulo en un fragmento de
cancion
if r~=0
n=find(espectro_amplitud==r); % encuentro la posicion donde se halla la max
amplitud del fragmento
frecuencias(i)=f(n); % Creo un vector con las frecuencias de las amplitudes
maximas
amplitudes(i)=espectro_amplitud(n);% Creo un vector con las amplitudes maximas
de cada fragmento
end
SIMULACIONES
Figura 1a. Seal de ballena 5to fragmento de cancin, con intervalo de 0.1*Fs
Figura 1b. Seal de ballena 25avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 1c. Seal de ballena 50avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 1d. Seal de ballena 65avo fragmento de cancin, con intervalo de 0.1*Fs
b) Audio Delfn
Figura 2a. Seal de delfn 10mo fragmento de cancin, con intervalo de 0.1*Fs
Figura 2b. Seal de delfn 20avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 2c. Seal de delfn 40avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 2d. Seal de delfn 60avo fragmento de cancin, con intervalo de 0.1*Fs
c) Audio Elefante
clc, clear all, close all
[y,Fs]=audioread('elefante.mp3'); % Se realiza la lectura de el archivo de audio
y1=y(:,1); % Se selecciona una sola banda del audio para realizar el analisis
aux=1; % Creo una variable auxiliar que funcionara como contador
N=fix(0.1*Fs); % Obtengo el numero de puntos a evaluar
aux2=N; % aux 2 otra variable auxiliar que funcionara como separador de
fragentos de cancion
h=1; % Variable auxiliar para controlar el aumento de variable "l"
l=1; % Variable auxiliar utilizada para graficar solo ciertos fragmentos
for i=1:65 % Lazo for para realizar el analisis de 65 partes de la cancion
y_25=y1(aux:N); % Extraigo cierto intervalo de la cancion
xk=dfs(y_25',aux2); % Llamo a la funcion dfs
espectro_amplitud=abs(xk); % Obtengo los modulos de xk obteniendo el espectro
f=linspace(0,Fs,aux2); % Creo vector de frecuencias
if i==(10*l) %Condicional para solo graficar ciertos intervalos de tiempo
figure
subplot(2,1,1) % Parametros para graficar el resultado en funcion del tiempo
plot(y_25')
grid on;
xlabel ('Tiempo (s)');
ylabel(' Amplitud');
title('ANALISIS DE TIEMPO ELEFANTE ');
subplot(2,1,2) % Parametros para graficar el resultado en funcion del tiempo
plot(f,espectro_amplitud)
axis([0 length(f)/2 -10 max(espectro_amplitud)+10]); % Creo ejes de graficacin
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA ELEFANTE ');
end
r=max(espectro_amplitud); % Obtengo el valor maximo modulo en un fragmento de
cancion
if r~=0
n=find(espectro_amplitud==r); % encuentro la posicion donde se halla la max
amplitud del fragmento
frecuencias(i)=f(n); % Creo un vector con las frecuencias de las amplitudes
maximas
amplitudes(i)=espectro_amplitud(n);% Creo un vector con las amplitudes maximas
de cada fragmento
end
if h==10 % Condicional para controlar la graficacion de fragmentos de cancion
l=l+1; % Incremento de variable auxiliar para controlar graficacion
h=0;
end
h=h+1; % Incremento de variable auxiliar
aux=N+1; % Obtengo limite inferior del siguiente fragmento a evaluar
N=N+aux2; % Obtengo limite superior del siguiente fragmento a evaluar
end
% Realizo grfica final de mplitudes maximas vs frecuencia
figure
stem(frecuencias,amplitudes);
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA ELEFANTE Modulo VS Frecuencia');
SIMULACIONES
Figura 3a. Seal de elefante 10mo fragmento de cancin, con intervalo de 0.1*Fs
Figura 3b. Seal de elefante 20avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 3c. Seal de elefante 40avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 3d. Seal de elefante 50avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 3e. Seal de elefante 60avo fragmento de cancin, con intervalo de 0.1*Fs
d) Audio Lobo
clc, clear all, close all
[y,Fs]=audioread('lobo.wav'); % Se realiza la lectura de el archivo de audio
y1=y([8*Fs:15*Fs],1); % Se selecciona una sola banda del audio para realizar el
analisis
aux=1; % Creo una variable auxiliar que funcionara como contador
N=fix(0.1*Fs); % Obtengo el numero de puntos a evaluar
aux2=N; % aux 2 otra variable auxiliar que funcionara como separador de
fragentos de cancion
h=1; % Variable auxiliar para controlar el aumento de variable "l"
l=1; % Variable auxiliar utilizada para graficar solo ciertos fragmentos
for i=1:65 % Lazo for para realizar el analisis de 65 partes de la cancion
y_25=y1(aux:N); % Extraigo cierto intervalo de la cancion
xk=dfs(y_25',aux2); % Llamo a la funcion dfs
espectro_amplitud=abs(xk); % Obtengo los modulos de xk obteniendo el espectro
f=linspace(0,Fs,aux2); % Creo vector de frecuencias
if i==(10*l) %Condicional para solo graficar ciertos intervalos de tiempo
figure
subplot(2,1,1) % Parametros para graficar el resultado en funcion del tiempo
plot(y_25')
grid on;
xlabel ('Tiempo (s)');
ylabel(' Amplitud');
title('ANALISIS DE TIEMPO LOBO ');
subplot(2,1,2) % Parametros para graficar el resultado en funcion del tiempo
plot(f,espectro_amplitud)
axis([0 length(f)/2 -10 max(espectro_amplitud)+10]); % Creo ejes de graficacin
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA LOBO ');
end
r=max(espectro_amplitud); % Obtengo el valor maximo modulo en un fragmento de
cancion
if r~=0
n=find(espectro_amplitud==r); % encuentro la posicion donde se halla la max
amplitud del fragmento
frecuencias(i)=f(n); % Creo un vector con las frecuencias de las amplitudes
maximas
amplitudes(i)=espectro_amplitud(n);% Creo un vector con las amplitudes maximas
de cada fragmento
end
if h==10 % Condicional para controlar la graficacion de fragmentos de cancion
l=l+1; % Incremento de variable auxiliar para controlar graficacion
h=0;
end
h=h+1; % Incremento de variable auxiliar
aux=N+1; % Obtengo limite inferior del siguiente fragmento a evaluar
N=N+aux2; % Obtengo limite superior del siguiente fragmento a evaluar
end
% Realizo grfica final de mplitudes maximas vs frecuencia
figure
stem(frecuencias,amplitudes);
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
Figura 4a. Seal de lobo 10mo fragmento de cancin, con intervalo de 0.1*Fs
Figura 4b. Seal de lobo 20avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 4c. Seal de lobo 40avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 4d. Seal de lobo 50avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 4e. Seal de lobo 60avo fragmento de cancin, con intervalo de 0.1*Fs
e) Audio Ovni
clc, clear all, close all
[y,Fs]=audioread('ovni.wav'); % Se realiza la lectura de el archivo de audio
y1=y(:,1); % Se selecciona una sola banda del audio para realizar el analisis
aux=1; % Creo una variable auxiliar que funcionara como contador
N=fix(0.1*Fs); % Obtengo el numero de puntos a evaluar
aux2=N; % aux 2 otra variable auxiliar que funcionara como separador de
fragentos de cancion
h=1; % Variable auxiliar para controlar el aumento de variable "l"
l=1; % Variable auxiliar utilizada para graficar solo ciertos fragmentos
for i=1:65 % Lazo for para realizar el analisis de 65 partes de la cancion
y_25=y1(aux:N); % Extraigo cierto intervalo de la cancion
xk=dfs(y_25',aux2); % Llamo a la funcion dfs
espectro_amplitud=abs(xk); % Obtengo los modulos de xk obteniendo el espectro
f=linspace(0,Fs,aux2); % Creo vector de frecuencias
if i==(10*l) %Condicional para solo graficar ciertos intervalos de tiempo
figure
subplot(2,1,1) % Parametros para graficar el resultado en funcion del tiempo
plot(y_25')
grid on;
xlabel ('Tiempo (s)');
ylabel(' Amplitud');
title('ANALISIS DE TIEMPO OVNI ');
subplot(2,1,2) % Parametros para graficar el resultado en funcion del tiempo
plot(f,espectro_amplitud)
axis([0 length(f)/2 -10 max(espectro_amplitud)+10]); % Creo ejes de graficacin
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA OVNI ');
end
r=max(espectro_amplitud); % Obtengo el valor maximo modulo en un fragmento de
cancion
if r~=0
n=find(espectro_amplitud==r); % encuentro la posicion donde se halla la max
amplitud del fragmento
frecuencias(i)=f(n); % Creo un vector con las frecuencias de las amplitudes
maximas
amplitudes(i)=espectro_amplitud(n);% Creo un vector con las amplitudes maximas
de cada fragmento
end
if h==10 % Condicional para controlar la graficacion de fragmentos de cancion
l=l+1; % Incremento de variable auxiliar para controlar graficacion
h=0;
end
h=h+1; % Incremento de variable auxiliar
aux=N+1; % Obtengo limite inferior del siguiente fragmento a evaluar
N=N+aux2; % Obtengo limite superior del siguiente fragmento a evaluar
end
% Realizo grfica final de mplitudes maximas vs frecuencia
figure
stem(frecuencias,amplitudes);
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA OVNI Modulo VS Frecuencia');
SIMULACIONES
Figura 5a. Seal de ovni 10mo fragmento de cancin, con intervalo de 0.1*Fs
Figura 5b. Seal de ovni 20avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 5c. Seal de ovni 40avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 5d. Seal de ovni 50avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 5e. Seal de ovni 60avo fragmento de cancin, con intervalo de 0.1*Fs
e) Audio Arjona
clc, clear all, close all
[y,Fs]=audioread('ArjonaOriginal.mp3'); % Se realiza la lectura de el archivo de
y1=y(:,1); % Se selecciona una sola banda del audio para realizar el analisis
aux=1; % Creo una variable auxiliar que funcionara como contador
N=fix(0.1*Fs); % Obtengo el numero de puntos a evaluar
aux2=N; % aux 2 otra variable auxiliar que funcionara como separador de
fragentos de cancion
h=1; % Variable auxiliar para controlar el aumento de variable "l"
l=1; % Variable auxiliar utilizada para graficar solo ciertos fragmentos
for i=1:65 % Lazo for para realizar el analisis de 65 partes de la cancion
y_25=y1(aux:N); % Extraigo cierto intervalo de la cancion
xk=dfs(y_25',aux2); % Llamo a la funcion dfs
espectro_amplitud=abs(xk); % Obtengo los modulos de xk obteniendo el espectro
f=linspace(0,Fs,aux2); % Creo vector de frecuencias
if i==(10*l) %Condicional para solo graficar ciertos intervalos de tiempo
figure
subplot(2,1,1) % Parametros para graficar el resultado en funcion del tiempo
plot(y_25')
grid on;
xlabel ('Tiempo (s)');
ylabel(' Amplitud');
title('ANALISIS DE TIEMPO ARJONA ');
subplot(2,1,2) % Parametros para graficar el resultado en funcion del tiempo
plot(f,espectro_amplitud)
axis([0 length(f)/2 -10 max(espectro_amplitud)+10]); % Creo ejes de graficacin
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA ARJONA ');
end
r=max(espectro_amplitud); % Obtengo el valor maximo modulo en un fragmento de
cancion
if r~=0
n=find(espectro_amplitud==r); % encuentro la posicion donde se halla la max
amplitud del fragmento
frecuencias(i)=f(n); % Creo un vector con las frecuencias de las amplitudes
maximas
amplitudes(i)=espectro_amplitud(n);% Creo un vector con las amplitudes maximas
de cada fragmento
end
if h==10 % Condicional para controlar la graficacion de fragmentos de cancion
l=l+1; % Incremento de variable auxiliar para controlar graficacion
h=0;
end
h=h+1; % Incremento de variable auxiliar
aux=N+1; % Obtengo limite inferior del siguiente fragmento a evaluar
N=N+aux2; % Obtengo limite superior del siguiente fragmento a evaluar
end
% Realizo grfica final de mplitudes maximas vs frecuencia
figure
stem(frecuencias,amplitudes);
grid on;
xlabel(' Frecuencia Hz');
ylabel (' Mdulo de Xk')
title('ANALISIS DE FRECUENCIA ARJONA Modulo VS Frecuencia');
SIMULACIONES
Figura 6a. Seal de Arjona 10mo fragmento de cancin, con intervalo de 0.1*Fs
Figura 6b. Seal de Arjona 20avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 6c. Seal de Arjona 40avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 6d. Seal de Arjona 50avo fragmento de cancin, con intervalo de 0.1*Fs
Figura 6e. Seal de Arjona 60avo fragmento de cancin, con intervalo de 0.1*Fs
f) Audio Grabacion
SIMULACIONES
Conclusiones