You are on page 1of 10

ESCUELA POLITCNICA NACIONAL

FACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

CARRERA DE INGENIERA ELECTRNICA Y


TELECOMUNICACIONES

SANTIAGO P. GUALLICHICO A.

JEISON S. CASTRO G.

ING. ROBIN ALVAREZ

PROCESAMIENTO DIGITAL DE SEALES

QUITO

2016-B
ESCUELA POLITCNICA NACIONAL
PROCESAMIENTO DIGITAL DE SEALES
TEMA: TCNICAS DE REDUCCIN O AUMENTO DE FS
1.- Planteamiento del problema
Se desea implementar un programa en Matlab el cual permita sumar dos seales de
distinta Fs empleando las operaciones necesarias mediante:
a) Bajando la Fs de mayor valor
b) Subiendo la Fs de menor valor
2. Solucin:
Teora general
DIEZMADO (decimation):
El diezmado o decimatin reduce la tasa de muestreo original de una secuencia a una
ms baja, es la operacin opuesta a la interpolacin. El proceso de decimacin filtra
los datos de entrada con un filtro de paso bajas y luego vuelve a muestrear la seal
suavizada resultante a una velocidad menor.
Instruccin en Matlab: DECIMATE

Figura 1. Uso de Decimate


REDUCCIN DE LA TASA DE MUESTREO POR UN FACTOR ENTERO
INSTRUCCIN EN MATLAB: downsample: Decrease sampling rate by integer factor
Syntax: y = downsample(x,n)

Description: y = downsample(x,n) decreases the sampling rate of x by keeping every


nth sample starting with the first sample. x can be a vector or a matrix. If x is a matrix,
each column is considered a separate sequence.

REMUESTREO (RESAMPLING: Permite cambiar la tasa de muestreo por factor


racional
INTERPOLACIN: La operacin de interpolacin aumenta la tasa de muestreo por un
factor entero. Es opuesta al diezmado.

Figura 2. Uso de Interpolacin


3. Simulacin en Matlab
Se implantaron cdigos en Matlab los cuales permiten realizar el aumento o
disminucin de la Fs para poder sumar dos distintas seales, generalmente mediante
un factor de muestreo.
EJERCICIO 1 AUDIOS( DELFIN Y PAJAROS)
a) Bajando la Fs de mayor valor
clc, clear;
%EJERCICIO 1
% Suma de dos seales a diferente FS, Bajando la Fs de mayor valor.
[cancion1,Fs1] = audioread('delfin.mp3'); % Leo el audio "Delfn" grabado en
carpeta Matlab
[cancion2,Fs2] = audioread('pajaros.wav'); % Leo el audio "pjaros" grabado en
carpeta Matlab
can1=cancion1(:,1);% Selecciono los datos de un solo canal del audio "delfn"
delfin_11025=decimate(can1,4); % Con el comando decimate reduzco la Fs=44100 en
un factor de 4 a Fs=11025
subplot(2,2,1)
plot(can1(1:length(can1)))% Grafico audio "delfin" a Fs=44100
% Se asigna ttulos y ejes a la grfica .
title('SONIDO DE DELFIN MUESTRADA A FS=44100 ORIGINAL');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,2)
a=length(can1)/4; % Creo vector muestras para audio "delfin" a Fs=16000
plot(delfin_11025(1:a),'r') % Grafico audio "delfin" a Fs=11025
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE DELFIN MUESTRADA A FS=11025');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,3)
plot(cancion2) % Grafico audio "pajaros" a Fs=11025
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE PAJAROS MUESTRADA A FS=11025');
xlabel('Muestras');
ylabel('Amplitud')
if length(delfin_11025)> length(cancion2) % Condicional if para entrar a crear
vectores de igual dimensin para sumar termino punto a punto
aux=[cancion2',zeros(1,length(delfin_11025)-length(cancion2))]; % creo
vector con audio de menor tamao, relleno de ceros hasta completar la dimensin
del audio 1
suma=delfin_11025+aux; % Obtengo el resultado final, la suma de los vectores
de igual dimensin
else if length(delfin_11025)< length(cancion2) % Condicional if para entrar a
crear vectores de igual dimensin para sumar termino punto a punto
aux=[delfin_11025',zeros(1,length(cancion2)-length(delfin_11025))]; % creo
vector con audio de menor tamao relleno de ceros hasta completar la dimensin
del audio 2
suma=cancion2'+aux; % Obtengo el resultado final, la suma de los vectores de
igual dimensin
end
end
subplot(2,2,4)
plot(suma,'g') % Grafico suma de audio 1 y audio dos a Fs=11025
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE PAJAROS + SONIDO DE DELFIN MUESTRADAS A FS=11025');
xlabel('Muestras');
ylabel('Amplitud')
wavwrite(suma,11025,'Pajaros_delfin');% creo el archivo de audio de la suma de
los dos audios a una Fs=11025

b) Subiendo la Fs de menor valor


% Suma de dos seales a diferente Fs aumentando la Fs de menor valor.
pajaros_44100=interp(cancion2,4); % Con el comando interp aumento la Fs=11025 en
un factor de 3 a Fs=44100
figure
subplot(2,2,1)
plot(cancion2(1:length(cancion2))) % Grafico audio "pjaros" a Fs=11025
title('SONIDO DE PAJAROS MUESTRADA A FS=11025 ORIGINAL');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,2)
b=length(cancion2)*4; % Valor de la longitud de cancion2
plot(pajaros_44100(1:b),'r')% Grafico audio "pjaros" a Fs=44100
% Se asigna ttulos y ejes a la grfica.
title('SONIDO DE PAJAROS MUESTRADA A FS=44100');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,3)
plot(cancion1) % Grafico audio "delfin" a Fs=44100
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE DELFIN MUESTRADA A FS=44100');
xlabel('Muestras');
ylabel('Amplitud')
if length(pajaros_44100)> length(can1) % Condicional if para entrar a crear
vectores de igual dimensin para sumar termino punto a punto
aux2=[can1',zeros(1,length(pajaros_44100)-length(can1))]; % creo vector con
audio de menor tamao, relleno de ceros hasta completar la dimensin del audio 1
suma2=pajaros_44100'+aux2;% Obtengo el resultado final, la suma de los
vectores de igual dimensin
else if length(pajaros_44100)< length(can1)% Condicional if para entrar a crear
vectores de igual dimensin para sumar termino punto a punto
aux2=[pajaros_44100',zeros(1,length(can1)-length(pajaros_44100))]; % creo
vector con audio de menor tamao relleno de ceros hasta completar la dimensin
del audio 2
suma2=can1'+aux2; % Obtengo el resultado final, la suma de los vectores de
igual dimensin
end
end
subplot(2,2,4)
plot(suma2,'g')% Grafico suma de audio 1 y audio dos a Fs=44100
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE PAJAROS + SONIDO DE DELFIN MUESTRADAS A FS=44100');
xlabel('Muestras');
ylabel('Amplitud')
wavwrite(suma,44100,'Pajaros_delfin2');% creo el archivo de audio de la suma de
los dos audios a una Fs=44100

EJERCICIO 2 AUDIOS( ARJONA Y ELEFANTE)


a) Bajando la Fs de mayor valor
%EJERCICIO 1
% Suma de dos seales a diferente FS, Bajando la Fs de mayor valor.
[cancion1,Fs1] = audioread('ArjonaOriginal.mp3'); % Leo el audio
"ArjonaOriginal" grabado en carpeta Matlab
[can2,Fs2] = audioread('elefante.mp3'); % Leo el audio "elefante" grabado en
carpeta Matlab
can1=cancion1(:,1); % Selecciono los datos de un solo canal del audio
"ArjonaOriginal"
cancion2=can2(:,1); % Selecciono los datos de un solo canal del audio "elefante"
Arjo_1600=decimate(can1,3); % Con el comando decimate reduzco la Fs=48000 en un
factor de 3 a Fs=16000
subplot(2,2,1)
plot(can1(1:length(can1))) % Grafico audio "ArjonaOriginal" a Fs=48000
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE ARJONA MUESTRADA A FS=48000 ORIGINAL');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,2)
a=length(can1)/3; % Creo vector muestras para audio "ArjonaOriginal" a Fs=16000
plot(Arjo_1600(1:a),'r') % Grafico audio "ArjonaOriginal" a Fs=16000
% Se asigna ttulos y ejes a la grfica
title('SONIDO ARJONA MUESTRADA A FS=16000');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,3)
plot(cancion2) % Grafico audio "elefante" a Fs=16000
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE ELEFANTE MUESTRADA A FS=16000');
xlabel('Muestras');
ylabel('Amplitud')
if length(Arjo_1600)> length(cancion2) % Condicional if para entrar a crear
vectores de igual dimensin para sumar termino punto a punto
aux=[cancion2',zeros(1,length(Arjo_1600)-length(cancion2))];% creo vector
con audio de menor tamao, relleno de ceros hasta completar la dimensin del
audio 1
suma=Arjo_1600'+aux; % Obtengo el resultado final, la suma de los vectores
de igual dimensin
else if length(Arjo_1600)< length(cancion2) % Condicional if para entrar a crear
vectores de igual dimensin para sumar termino punto a punto
aux=[Arjo_1600',zeros(1,length(cancion2)-length(Arjo_1600))];% creo vector
con audio de menor tamao relleno de ceros hasta completar la dimensin del
audio 2
suma=cancion2'+aux; % Obtengo el resultado final, la suma de los vectores de
igual dimensin
end
end
subplot(2,2,4)
plot(suma,'g') % Grafico suma de audio 1 y audio dos a Fs=16000
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE ARJONA + SONIDO DE ELEFANTE MUESTRADAS A FS=16000');
xlabel('Muestras');
ylabel('Amplitud')
wavwrite(suma,16000,'Arjona_elefante');% creo el archivo de audio de la suma de
los dos audios a una Fs=16000

b) Subiendo la Fs de menor valor


% Suma de dos seales a diferente FS, aumentando la Fs de menor valor.
elefante_48000=interp(cancion2,3); % Con el comando interp aumento la Fs=16000
en un factor de 3 a Fs=48000
figure
subplot(2,2,1)
plot(cancion2(1:length(cancion2)))% Grafico audio "elefante" a Fs=16000
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE ELEFANTE MUESTRADA A FS=16000 ORIGINAL');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,2)
b=length(cancion2)*3; % Valor de la longitud de cancion2
plot(elefante_48000(1:b),'r')% Grafico audio "elefante" a Fs=48000
% Se asigna ttulos y ejes a la grfica .
title('SONIDO DE ELEFANTE MUESTRADA A FS=48000');
xlabel('Muestras');
ylabel('Amplitud')
subplot(2,2,3)
plot(can1)% Grafico audio "ArjonaOriginal" a Fs=48000
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE ARJONA MUESTRADA A FS=48000');
xlabel('Muestras');
ylabel('Amplitud')
if length(elefante_48000)> length(can1) % Condicional if para entrar a crear
vectores de igual dimensin para sumar termino punto a punto
aux2=[can1',zeros(1,length(elefante_48000)-length(can1))]; % creo vector con
audio de menor tamao, relleno de ceros hasta completar la dimensin del audio 1
suma2=elefante_48000'+aux2; % Obtengo el resultado final, la suma de los
vecores de igual dimensin
else if length(elefante_48000)< length(can1) % Condicional if para entrar a
crear vectores de igual dimensin para sumar termino punto a punto
aux2=[elefante_48000',zeros(1,length(can1)-length(elefante_48000))]; % creo
vector con audio de menor tamao relleno de ceros hasta completar la dimensin
del audio 2
suma2=can1'+aux2; % Obtengo el resultado final, la suma de los vectores de
igual dimensin
end
end
subplot(2,2,4)
plot(suma2,'g')% Grafico suma de audio 1 y audio dos a Fs=48000
% Se asigna ttulos y ejes a la grfica
title('SONIDO DE ARJONA + SONIDO DE ELEFANTE MUESTRADAS A FS=48000');
xlabel('Muestras');
ylabel('Amplitud')
wavwrite(suma2,48000,'Arjona_elefante_2'); % Creo el archivo de audio de la suma
de los dos audios a una Fs=48000

4. Resultados Obtenidos
EJERCICIO 1 AUDIOS( DELFIN Y PAJAROS)
a) Bajando la Fs de mayor valor
Figura 3. Reduccin de Fs= 44100 a Fs=11025 usando comando decimate

b) Subiendo la Fs de menor valor

Figura 4. Reduccin de Fs= 11025 a Fs=44100 usando comando Interp


EJERCICIO 2 AUDIOS( ARJONA Y ELEFANTE)
a) Bajando la Fs de mayor valor
Figura 5. Reduccin de Fs= 48000 a Fs=16000 usando comando decimate

b) Subiendo la Fs de menor valor

Figura 6. Reduccin de Fs= 16000 a Fs=48000 usando comando Interp


Conclusiones

Se logr implementar un cdigo propio para poder realizar las operaciones de


desplazamiento, escalamiento y reflexin mediante el uso de variables y vectores.
Se observ que al tener un desplazamiento positivo significa que la seal se va a
retrasar un cierto tiempo a la seal original, caso contrario al ser negativo, la seal
se adelantara a la original.
La operacin de escalamiento tambin cuenta con dos diferentes actividades, si
este factor es mayor a 1, la escala de la seal original se reducir, mientras que si
es menor a 1, la seal se expandir de acuerdo al factor de escalamiento.
A una seal se le puede aplicar la cantidad de operaciones deseadas, pero se debe
tener en cuenta el orden de ejecucin de ciertas instrucciones.
Se observ que al cambiar la frecuencia de muestreo tanto al disminuirla como
aumentarla, la informacin que tiene esta variable se mantiene igual, no
perdemos informacin el mismo audio de una Fs=44100, llego a reproducirse igual
que a una Fs=11025, una Fs 4 veces menor. Lo mismo suceda al pasar de un
audio de menor Fs al aumentarlo, el audio era idntico al original.

You might also like