Sunteți pe pagina 1din 99

Quien no se resuelve a cultivar el hbito de pensar, se pierde el mayor placer de la vida

Thomas A. Edison

Curso bsico de Sistemas de Comunicacin


Herramienta de simulacin: MatLab

Ing. Robin Alvarez Rueda, MSc, PhD

SIMULACIN DE SISTEMAS DE COMUNICACIN

ANALGICOS Y DIGITALES

REPRESENTACIN JERRQUICA DE UN MODELO DE COM. DIGITALES:


Para reducir la complejidad de un modelo, se lo suele representar en forma jerrquica (en bloques funcionales llamados SUBSISTEMAS) de modo que se facilita su estudio (divide y vencers) y simulacin (se disminuye la carga computacional). Para el caso de un sistema de comunicaciones:

TOOLBOXES NECESARIOS PARA EL REA DE COMUNICACIONES:

LOS QUE USAREMOS

Tpicos a cubrir en cuanto a seales (fuentes):


- Clasificacin de fuentes de informacin.
- Discretizacin de seales (teorema del muestreo) - Generacin de seales discretas. - Seales analgicas vs seales digital: varios efectos usando seales digitales (amplificacin, inversin, eco, etc). - Anlisis espectral: componentes de frecuencia de una seal discreta - Filtros digitales.

TEORA DE FUENTES DE INFORMACIN


TIPOS DE FUENTES DE INFORMACIN: A) POR SUS CARACTERSTICAS ESTADSTICAS

B) POR SU COMPORTAMIENTO EN EL TIEMPO

A) POR SUS CARACTERSTICAS ESTADSTICAS:


A1) DETERMINISTAS: no tienen incertidumbre, sus valores son conocidos. En la naturaleza, casi no hay nada que sea determinista. A2) ESTOCSTICAS O ALEATORIAS: su incertidumbre es caracterizada por su Funcin de Distribucin de Probabilidad (FDP) o por sus momentos estadsticos (media, varianza, skewness y kurtosis). Casi todo en la naturaleza tiende a ser estocstico y por tanto, todos nuestros estudios deberamos orientarlos hacia este campo.

B) POR SU COMPORTAMIENTO EN EL TIEMPO:


B1) CONTINUAS (ANALGICAS): Corresponde a la mayora de los fenmenos y mediciones de la naturaleza. Puede tomar cualquier valor real. B2) DISCRETAS: para poder procesar las seales analgicas utilizando el computador, es necesario DISCRETIZARLAS. Tomamos solo ciertos valores de la seal continua (teorema del muestreo). Entonces la seal resultante tendr un valor finito de puntos (seal discreta).

CASO ESPECIAL: BINARIAS (SOLO DOS NIVELES): en el caso


de comunicaciones digitales, es usual utilizar solo dos niveles (1L y 0L). En este caso se denomina seal discreta binaria.

En el resto del curso solo consideraremos seales discretas.

Tpicos a cubrir en cuanto a seales (fuentes):


- Clasificacin de fuentes de informacin.
- Discretizacin de seales (teorema del muestreo) - Generacin de seales discretas. - Seales analgicas vs seales digital: varios efectos usando seales digitales (amplificacin, inversin, eco, etc). - Anlisis espectral: componentes de frecuencia de una seal discreta - Filtros digitales.

ANTES: ALGUNOS CONCEPTOS NECESARIOS

Anlisis de Fourier: componentes de frecuencia de la seal.

Toda seal est compuesta por un rango de frecuencias: desde una Fmin hasta una Fmax. Se lo conoce como ANCHO DE BANDA.

Ejemplo: si analizamos la voz humana con un analizador de espectros, veramos que las componentes de frecuencia van hasta los 35 Khz????

??????????
Observacin 1: Existen personas con capacidades de generar frecuencias ms altas y ms bajas de lo normal: soprano, , tenor, etc (ver tabla). Observacin 2: de todas estas frecuencias, el odo humano solo escucha en un rango aproximado desde 20 Hz hasta 20 KHz. Observacin 3: la inteligibilidad (que se entiende lo que dice) se encuentra en las frecuencias bajas, por ello el canal telefnico restringe el AB de la voz desde 30 Hz hasta 3000 Hz. Veamos una comparacin de rango audible entre el humano y otros animales:

LA FORMACIN TRADICIONAL QUE TENEMOS SOLO NOS PERMITE SER CONSUMIDORES DE CONOCIMIENTO. DEBEMOS SER GENERADORES DE CONOCIMIENTO (INVESTIGACIN).

CMO LO HACEMOS?

RESPUESTA:
MEDIANTE EL CONOCIMIENTO DE PROCESAMIENTO DIGITAL DE SEALES Y EL USO DE HERRAMIENTAS DE SIMULACIN.

DISCRETIZACIN DE SEALES ANALGICAS:


Ya que la simulacin la realizamos con el computador, necesitamos discretizar la seal analgica. Por esta razn, solo tomamos los valores de la seal analgica cada cierto tiempo llamado perodo de muestreo (la inversa de la frecuencia de muestreo).

Veremos ahora los fundamentos de la discretizacin de seales analgicas:

Seal analgica

Toma de muestras cada Ts segundos

Seal discreta

1. Cada cuanto tiempo debo tomar las muestras de modo que pueda ver qu componentes de frecuencia tiene la seal? Teorema de muestreo: Fs debe ser mayor o igual a 2* Fmax 2. Cada cuanto tiempo debo tomar las muestras de modo que pueda recuperar la forma de onda que tuvo la seal? Teorema de muestreo: Fs debe ser mucho mayor que 2 * Fmax (10* Fmax)

Deduccin del teorema de muestreo:

Tpicos a cubrir en cuanto a seales (fuentes):


- Clasificacin de fuentes de informacin.
- Discretizacin de seales (teorema del muestreo) - Generacin de seales discretas. - Seales analgicas vs seales digital: varios efectos usando seales digitales (amplificacin, inversin, eco, etc). - Anlisis espectral: componentes de frecuencia de una seal discreta. - Filtros digitales.

GENERACIN Y/ O ANLISIS DE SEALES DISCRETAS CON EL PC:


Procedimiento general para generar, visualizar y escuchar (si est en el rango audible) una seal DETERMINISTA o ESTOCSTICA discretas:
1. Frecuencia mxima: La seal est generalmente compuesta por varias componentes de frecuencia. Debemos coger la componente de mxima frecuencia: Fmax Ejemplo: una seal compuesta por dos tonos: uno de 50 Hz y otro de 120 Hz Fmax = 120; Si escogemos una frecuencia inferior a esta, aparecern frecuencias falsas. Este fenmeno de denomina aliassing.

Si es una seal estocstica y no conocemos su Fmax, nosotros debemos limitar dicha Fmax por medio de un
filtro (denominado antialiassing). Se ver luego de ver filtros digitales. 2. Frecuencia de muestreo (Fs) :

a) Si nos interesa analizar la informacin en frecuencia:


Teorema del muestreo: Para que la seal original pueda ser correctamente analizada en frecuencia, se la debe muestrear con una frecuencia de muestreo (Fs) mayor o igual a 2 veces la Fmax contenida en la seal. A mayor valor, no ganamos nada en la determinacin da las componentes de frecuencia.

b) Si nos interesa analizar o recuperar la informacin de forma de onda: al menos muestrear a Fs =


10*Fmax;

3.
3. 4. 5.

Base de tiempos: t = (tiempo de inicio : 1/Fs : tiempo de fin): t = 0:1/Fs:1;


La funcin: y = sin(2*pi*50*t) + 2*sin(2*pi*120*t);

Si es estocstica, tendremos su registro.

Grfico temporal: plot ( t , y) o stem para no olvidar que estamos trabajando con seales discretas. Escuchar el vector Y como sonido generado a una Fs: sound (vector, Fs): sound (y, Fs)

SEALES DETERMINISTAS DISCRETAS:


% Ejemplo: generar una seal compuesta por dos tonos: uno % de 500 Hz y otro de 1000 Hz que dure 20 segundos: analizarla en su forma y escucharla. close all; clear all; clc % Frecuencia mxima: Fmax = 1000; % Frecuencia de muestreo: Fs= 10*Fmax; % probar disminuyendo a 2*Fmax % para buena visualizacin de la seal %Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final) t = (0:1/Fs:2); %Seal a generar: y = sin(2*pi*50*t) + 2*sin(2*pi*120*t); %Grfico de la seal: %stem(t,y) plot (t,y) % no escuchar para evitar problemas % Escucha la seal: %sound (y, Fs) % no graficar para evitar tiempos

Zoom:

Ejemplo 2: Emplear los conocimientos anteriores para analizar su rango personal de audicin. Verificar todo con osciloscopio un analizador de espectros.
% 1. Anlisis en las frecuencias bajas: % Ejemplo: barrido de frecuencias desde 1 Hz hasta % 20 Hz en pasos de 2 Hz. % Hacer que cada tono dure 2 segundos close all; clear all; clc % Frecuencia mxima: for i=100:100:1000 Fmax = i; % No nos interesa visualizarla pues consume recursos % y se ralentiza el programa. Entonces: Fs= 2*Fmax; % para buena visualizacin de la seal %Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final) t = (0:1/Fs:2); %Seal a generar: y = 2*sin(2*pi*i*t); % Escucha la seal: sound (y, Fs) disp(i) pause % mientras no demos ENTER, no avanza el % programa. end % 2. Anlisis en las frecuencias altas: % Ejemplo: barrido de frecuencias desde 1000 Hz % hasta 20000Hz en pasos de 2000 Hz. % Hacer que cada tono dure 2 segundos close all; clear all; clc for i=1000:100:2500 Fmax = i; % No nos interesa visualizarla pues consume recursos % y se ralentiza el programa. Entonces: Fs= 10*Fmax; % para buena visualizacin de la seal %Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final) t = (0:1/Fs:2); %Seal a generar: y = 1*sin(2*pi*i*t); % % priemro graficamos pero sin escuchar: % figure % plot(t,y) % Escucha la seal pero sin graficar: disp(i) sound (y, Fs) end

BARRIDO EN FRECUENCIAS:
Similar al barrido que realizamos con el lazo FOR, tenemos una funcin que lo realiza automticamente: la funcin CHIRP.

SEAL CHIRP: (modulacin lineal en frecuencia, amplitud constante)


% Formato:

Chirp(base de tiempo, F_inicial, tiempo de demora, F_final )


% Realizacin general: % 1. Fmx = F_final; % 2. Frecuencia de muestreo = mnimo el doble de la Fmax: Fs = 10*Fmax; % 3. Base de tiempos: t = (0: 1 / Fs : tiempo de demora) % 4. Seal a generar: Chirp ( base de tiempo, F_inicial, tiempo de demora, F_final ) % 5. Grfico de la seal: plot(t,y) % 6. Visualizacin tiempo frecuencia: figure; specgram(y,256,1E3,256,250);
% Ejemplo: Generar una chir que inicie en 1000 Hz y que en 20 segundos alcance 10000 Hz. % Fmax= 10000; Fs = 10*Fmax; t = 0:1/Fs:20; y=chirp(t,1000,20,10000); %plot(t,y); sound (y, Fs)

OTRAS FUNCIONES DE MATLAB:


% Seal diente de sierra:
Fmax = 50; Fs = 10000; t = 0:1/Fs:1.5;

% Seal triangular: PENDIENTE: ejercicio


% Seal diente de sierra: Fmax = 50; Fs = 10000; t = 0:1/Fs:1.5; x = sawtooth(2*pi*Fmax*t, 0.9); stem(t,x), axis([0 0.2 -1 1]) figure plot(t,x), axis([0 0.2 -1 1])

x = sawtooth(2*pi*Fmax*t);
plot(t,x), axis([0 0.2 -1 1])

% Seal SINC:
x = linspace(-5,5); y = sinc(x); plot(x,y)

Tpicos a cubrir en cuanto a seales (fuentes):


- Clasificacin de fuentes de informacin.
- Discretizacin de seales (teorema del muestreo) - Generacin de seales discretas. - Seales analgicas vs seales digital: varios efectos usando seales digitales (amplificacin, inversin, eco, etc). - Anlisis espectral: componentes de frecuencia de una seal discreta - Filtros digitales.

SEAL ANALGICA VS SEAL DIGITAL

Usaremos una seal DISCRETA de audio

e introduciremos algunos
efectos que seran tal vez imposibles con una seal analgica. - Ver programas (cool edit y DJ) - Hacer efectos en matlab (amplitud, eco, velocidad, desvanecimiento, ruido)

Trabajando con archivos de sonido (.wav y .mp3)


% Obtenemos la seal original (estereo): clear all; close all; %archivo original: [y_original,Fs,format] = wavread('ArjonaOriginal'); size(y_original) %2 canales (estereo): 569039 filas por 2columnas plot(y_original) % se verifica dos seales diferentes title('seal original (estereo)') % sound(y_original,Fs) canal_izquierdo_original=y_original(:,1);%extraemos 1 solo canal size(canal_izquierdo_original) %569039 filas por 1 columnas figure plot(canal_izquierdo_original) title('seal original canal izquierdo')

%quitar todos los plots


%sound(canal_izquierdo_original,Fs) % si reproduce

Para archivos .mp3: usar la funcin externa mp3read

Aadiendo efectos: eco (seal retardada y de menor amplitud)


% Al anterior programa, aadimos lo siguiente:
% 1. Introduccin de eco tiempo_retardo=0.7; retardo=tiempo_retardo*Fs; %Aadimos a la seal original, la misma seal pero retardada y de menor %amplitud: %y_eco = [canal_izquierdo_original' zeros(1,retardo)] + 0.7*[zeros(1,retardo) canal_izquierdo_original']; eco = 0.7*[zeros(1,retardo) canal_izquierdo_original']; y_eco = [canal_izquierdo_original' zeros(1,retardo)] + eco;

figure subplot(3,1,1) plot (canal_izquierdo_original) title('canal izquierdo original')


subplot(3,1,2) plot (eco) title('eco: original retardada y de menor amplitud') subplot(3,1,3) plot (y_eco) title('canal izquierdo con eco') %sound(y_eco,Fs) % Antes, quitar toda grfica.

1. Efecto Eco:

2. Efecto: alteracin de la amplitud


% 2. Alteracin de la amplitud: Factor_amplitud= 2; y_amp= Factor_amplitud * canal_izquierdo_original; figure subplot(2,1,1) plot (canal_izquierdo_original) title('canal izquierdo original') subplot(2,1,2) plot (y_amp) title('canal izquierdo alterado su amplitud') %sound(y_amp,Fs) % si reproduce con eco, excelente ....

3. Efecto: Reversa
%3. Sonar en Reversa: canal_izquierdo_original_reversa= flipud (canal_izquierdo_original); figure subplot(2,1,1) plot (canal_izquierdo_original) title('canal izquierdo original') subplot(2,1,2) plot (canal_izquierdo_original_reversa) title('canal izquierdo en reversa')

%sound(canal_izquierdo_original_reversa, Fs)

4: Efectos: ms rpido o ms lento (variando la Fs)


% 4. Alteracin de la velocidad: % 4.1 Ms lento (menor frecuencia de muestreo) nueva_Fs= Fs / 2; %sound(canal_izquierdo_original, nueva_Fs) % 4.1 Ms rpido (mayor frecuencia de muestreo) nueva_Fs= 2 * Fs; %sound(canal_izquierdo_original, nueva_Fs)

CONCLUSIN:
EL TRATAMIENTO Y MANIPULACIN DE SEALES DIGITALES ES MUCHO MS FCIL y POTENTE QUE CON SEALES ANALGICAS ( A VECES PUEDE SER IMPOSIBLE), PUES PERMITE LA UTILIZACIN DE ALGORITMOS DE PROCESAMIENTO DIGITAL DE SEALES.

ESTE ENTRENAMIENTO SER CLAVE PARA ANALIZAR SEALES DE COMUNICACIONES

Tpicos a cubrir en cuanto a seales (fuentes):


- Clasificacin de fuentes de informacin.
- Discretizacin de seales (teorema del muestreo) - Generacin de seales discretas. - Seales analgicas vs seales digital: varios efectos usando seales digitales (amplificacin, inversin, eco, etc). - Anlisis espectral: componentes de frecuencia de una seal discreta. - Filtros digitales.

TRANSFORMADA DE FOURIER PARA FUNCIONES DE TIEMPO DISCRETO:


Si una seal discreta x(n) es absolutamente sumable:

Entonces, su Transformada de Fourier de Tiempo Discreto (TFTD) est dada por:

El resultado es un vector continuo y complejo pues la frecuencia w llamada frecuencia digital es una variable continua que est medida en radianes.

Ejemplo: para la secuencia: a) Calcule su TFTD:

Resolucin: La TFTD est dada por:

Problema: no podemos hacerlo en matlab pues es continuo desde


infinito hasta + infinito. Adems es compleja.

Solucin: La TFTD tiene dos propiedades importantes:


1. PERIODICIDAD: la TFTD es peridica en w con perodo 2 pi

IMPLICACIONES: basta ver la funcin en (0, 2*pi) en (-pi, pi), etc y no necesitamos verlo en (- infinito, infinito).

2. SIMETRA: para x(n) real, la TFTD es conjugada simtrica.

IMPLICACIONES: para saber cmo es basta considerar solo medio perodo. Se suele utilizar

CLCULO DE LA TFTD USANDO LA TRANFORMADA DE FOURIER DISCRETA (TFD)

INGLS: DFT

Cantidad de operaciones requeridas para calcular la DFT:

Para una sola muestra X (k): Deberemos hacer N multiplicaciones complejas y (N-1) sumas complejas. Como k vara desde 0 hasta N-1, todos los valores de X (k) requieren: N2 multiplicaciones complejas N(N-1) casi es N2 sumas complejas. Sera un clculo numrico muy ineficiente. SOLUCIN: Entonces se ide un grupo de algoritmos llamados Transformada Rpida de Fourier (FFT).

TRANSFORMADA RPIDA DE FOURIER EN MATLAB:


Fast Fourier Transform: NO VEREMOS EL DESARROLLO DEL ALGORTIMO Y = fft (x,m); % Calcula la DTF de x[n] en m

puntos (nFFT); vector complejo

EL MDULO DEL VECTOR COMPLEJO OBTENIDO CON LA FFT, SE DENOMINA:

PERIODOGRAMA

PROCEDIMIENTO PARA OBTENER EL PERIODOGRAMA:


Si la X es la seal a analizar, entonces para ver su contenido de frecuencias (su periodograma), se realiza el siguiente procedimiento:

1. Fijamos el nmero de muestras del espectro terico (funcin continua con perodo 2pi) que queremos obtener (nFFT), mediante la FFT. Normalmente se escoge 512, 1024 (potencias de 2) 2. Calculamos dichas muestras mediante la FFT: Y=fft(X,nFFT). Este es un vector complejo que tiene mdulo y ngulo. Nos interesa el mdulo: 3. El mdulo lo podemos calcular mediante la multiplicacin del vector por su conjugada: P1=Y.*conj(Y)/nFFT 4. Fijamos el eje de frecuencias de modo que solamente visualicemos la mitad del espectro ya que la otra mitad es simtrica: f=0:Fmax/(length(P1)/2):Fmax, donde Fmax es la frecuencia mxima de la seal que estamos analizando. Si es una seal estocstica, dicha Fmax ser establecida mediante un filtro antialiasing. 5. Graficamos el mdulo del espectro vs la frecuencia ya sea en escala lineal o en escala logartmica.
plot(f,P1(1:length(f))); xlabel('Hz') ylabel('P1( f )') title('Densidad Espectral de Potencias: escala lineal') plot(f,20*log10(abs(P1(1:length(f)))),'k'); xlabel('Hz') ylabel('P1( f )') title('Densidad Espectral de Potencias en escala de dB)')

Ejemplo: Generar una seal compuesta por dos tonos ( de 50 y 120 Hz) a la cual se le aade ruido con una FDP de tipo normal o gaussiano y que dure 5 seg. Verificar, mediante el periodograma, que dichos tonos estn presentes.
close all; clear all; clc; % Seal contaminada con ruido es una seal estocstica y por tanto no % podemos garantizar que tenga una frecuencia mxima determinada. % Para poder realizar el procedimiento conocido, debemos poner un % filtro antialiasing que s nos permita garantizar una frecuencia % mxima, por ejemplo de 200 Hz: Fmax= 150; % frecuencia maxima de la seal deseada Fs = 2*Fmax; % frequencia de muestreo t = 0:1/Fs:5; % eje de tiempo: la seal dura 5 seg. xn = sin(2*pi*50*t) + sin(2*pi*120*t) + randn(size(t)); plot(t,xn) % FILTRO ANTI-ALIASING: la Fcorte deber ser inferior a la Fmax Fcorte=140; WcN=Fcorte/(Fmax); [b,a]=butter(2,WcN); x_filt=filter(b,a,xn); % Clculo del espectro de potencia: nFFT= 1024; % El numero de muestras de la DTFT que queremos calcular Y=fft(xn,nFFT); % La transformada de Fourier: es vector complejo P1=Y.*conj(Y)/nFFT; % El periodograma es el modulo del vector complejo % Fijamos el eje de frecuencias de modo que solamente visualicemos la mitad del % espectro ya que la otra mitad es simtrica: f=0:Fmax/(length(P1)/2):Fmax;

% Visualizacin la mitad del espectro de potencia, la otra % mitad es simetrica: figure subplot(2,1,1) plot(f,P1(1:length(f))); xlabel('Hz') ylabel('P1( f )') title('DEP: escala lineal)')

subplot(2,1,2) plot(f,20*log10(abs(P1(1:length(f)))),'k'); xlabel('Hz') ylabel('P1( f )') title('DEP: escala en dB')

RESULTADOS:.

Observacin: si bien los dos tonos tienen el mismo tamao en el tiempo, en frecuencia tienen distinta potencia debido a la seal randmica aadida. Cada vez que corra el programa, esto cambiar.

QUITAR EL FILTRO: rand de amplitud 1


Qu pasa si quitamos el filtro antialiasing?

Con filtro

Sin filtro

QUITAR EL FILTRO: rand de amplitud 5


Qu pasa si quitamos el filtro antialiasing?

Con filtro: se distinguen los tonos

Sin filtro: aliasing

Conclusin importante: todo algoritmo que estemos probando, siempre deber ser sometido a distintas condiciones de ruido de forma controlada:

CALIDAD DE LA SEAL OBTENIDA:


Hasta aqu hemos introducido ruido de manera descontrolada

Cmo determinamos cunto ruido se ha introducido en nuestra seal ?

RELACIN

SEAL A RUIDO
Consideraremos ruido gaussiano blanco:

RELACIN SEAL A RUIDO


- Seal: onda o seal de inters: nuestra seal a transmitir - Ruido: todo lo dems que se introduce aleatorialmente
- Clculo de la relacin seal a ruido (dB): - Relacin seal a ruido (en escala lineal):

Ejemplos:
10 dB: valor RMS de la seal es 10 veces el valor RMS del ruido -10 dB: valor RMS de la seal fue 1/10 del valor RMS del ruido.

(10 10/10 )

Ejemplos: rand (nmeros randmicos uniformemente distrib.)

3dB: (10 ^(3/10) = 1.99)


close all; clear all; Fs = 100; t = 0:1/Fs:1; y1 = sin(2*pi*t*3)+rand(size(t))/1.99; plot(t,y1)

-3dB: (10 ^(-3/10) = 0.5012)


close all; clear all; Fs = 100; t = 0:1/Fs:1; y1 = sin(2*pi*t*3)+rand(size(t))/ 0.5012; plot(t,y1)

-10 dB: 10 ^(-10/10) = 0.1


close all; clear all; Fs = 100; t = 0:1/Fs:1; y1 = sin(2*pi*t*3)+rand(size(t))/ 0.1; plot(t,y1)

ES VISIBLE

ALGO VISIBLE

YA NO ES VISIBLE

ANALIZANDO UNA SEAL GRABADA DESDE EL EXTERIOR Y QUE ES TOTALMENTE DESCONOCIDA: En este caso, tampoco conocemos la Fmax y por tanto para evitar aliasing, debemos poner un filtro que me garantice una frecuencia mxima. Solo entonces podremos estar seguros de que el anlisis espectral que realicemos est mostrando los resultados correctos. Procedimiento de anlisis de seales externas:

1.
2.

Leer la seal signal_1.mat mediante el comando LOAD: load signal_1.mat


Necesariamente se debe conocer la Fs a la cual fue muestreada. Entonces, ya conocemos el valor mximo de frecuencia hasta donde podemos analizar dicha seal: Fmax = Fs /2. Para garantizar antialiasing, ponemos un filtro antialiasing. Para poder visualizarla en tiempo tal y como fue en la realidad, necesitamos fijar la base de tiempos. Lo realizamos as:
Tm=1/Fs; % Perodo de muestreo L=length(x_filt); % es la longitud del vector. Con esto ya tenemos una escala real de tiempo: t=0:Tm:Tm*(L-1); % Para que tenga el mismo nmero de elementos que x_filt: L plot(t,x_filt);

3. 4.

5.

El anlisis en frecuencia sera igual que antes.

Ejemplo: Leer la seal externa llamada signal_1.mat, que fue muestreada a 100Hz. Analizar las componentes de frecuencia que contiene hasta 50 Hz. Se sabe que esta seal tiene muchos artefactos en la zona de bajas frecuencias inferiores a 4 Hz. Adems calcular la frecuencia donde se da el mximo del espectro de potencias.
% Periodograma aplicado a una seal externa: % Analizar la seal hasta 50 Hz clear all; close all; clc; Fs=100; Fmax= Fs/2 % Frecuencia de muestreo conocida % Frecuencia mxima de la seal
% CLCULO DEL ESPECTRO DE POTENCIA: nFFT=2048; Y=fft(x_filt,nFFT); P=Y.*conj(Y)/(L/2)^2; %Eje de frecuencias: f=0:fmax/(length(P)/2):fmax; % eje de frecuencias: queremos la mitad de lo que devuelve FFT % Averiguamos la frecuencia mxima del espectro: [Max,Indice] = max(P) % Entrega el max y el ndice del max. F_max=f(Indice)

% Cargar seal 1: load signal_1.mat x=A; % FILTRO PASO BANDA (4-40)Hz: WcN=[4 40]/Fmax; [b,a]=butter(2,WcN); x_filt=filter(b,a,x); % VISUALIZACIN de la seal en el tiempo: Tm=1/Fs; % Perodo de muestreo L=length(x_filt); t=0:Tm:Tm*(L-1); % Para que tenga el mismo nmero de elementos que x_filt: L plot(t,x_filt);

%Graficamos el espectro de potencias: figure plot(f,P(1:length(f))); xlabel('Hz') ylabel('DSP') title('Densidad Espectral de Potencia')

Resultados: Se puede ver que la seal fue adquirida un tiempo de 300 segundos.

PROBLEMAS DEL PERIODOGRAMA:


Es un estimador sesgado debido a que la longitud de los datos es finito. Su varianza est dada por:

Vemos que no tiende a cero cuando N tiende a infinito y adems para N grande, es independiente de la frecuencia.

Sin embargo de todas estas desventajas, el periodograma es muy utilizado para tener una idea rpida de la DENSIDAD ESPECTRAL DE POTENCIAS DE LA SEAL ANALIZADA.

PROBLEMAS DEL PERIODOGRAMA: su variabilidad

SOLUCIN: TCNICAS DE MEJORADO DEL PERIODOGRAMA:


PERIODOGRAMA MODIFICADO: VENTANA DIFERENTE A LA RECTANGULAR

MTODO DE BARTLETT: PROMEDIADO DE PERIODOGRAMAS (REDUCIR VAR)

MTODOS DE WELCH: 1) Divisin en varias porciones. 2) Uso de ventanas diferentes a la rectangular: Hamming, Hanning, Blackmann, etc.

3) Solapamiento (recomendado del 50%)

TCNICAS DE MEJORADO DEL PERIODOGRAMA Mtodos de Bartlett y Welch:

WELCH: TRASLAPE + OTRAS VENTANAS

1. Empleando ventanas alternativas a la rectangular y traslapando para reducir la varianza.


% Mtodo manual:
Fs = 1000; t = 0:1/Fs:1; xn = sin(2*pi*50*t) + 2*sin(2*pi*120*t) + randn(size(t)); w = hanning(256)'; Pxx = ( abs(fft(w.*xn( 1:256))).^2 + ... abs(fft(w.*xn(129:384))).^2 + ... abs(fft(w.*xn(257:512))).^2 + ... abs(fft(w.*xn(385:640))).^2 + ... abs(fft(w.*xn(513:768))).^2 + ... abs(fft(w.*xn(641:896))).^2 ) / (norm(w)^2*6); plot((0:255)/256*Fs,10*log10(Pxx)) title('ventana de hanning de L = 256; traslape de 128 ( 50%)')

LA FUNCIN PWELCH: help (pwelch)

% Usando la funcin pwelch: Fs = 1000; t = 0:1/Fs:1; xn = sin(2*pi*50*t) + 2*sin(2*pi*120*t) + randn(size(t)); nfft = 256; % length of FFT window = hanning(256); noverlap = 128; % numero de muestras de traslape [Pxx,f] = pwelch(xn,window,noverlap,nfft,Fs); plot(f,10*log10(Pxx)) title('usando la funcin pwelch') OBSERVACIN: El pico en 50 Hz est 6dB por debajo del pico en 120 Hz. Entonces, se verifica que el segundo pico es el doble en amplitud que el primero.

La variabilidad del mtodo de clculo del espectro se ha reducido considerablemente.

PROGRAMA: Comparacin PERIODOGRAMA vs Welch (seal externa).


close all; clear all; clc Fmax= 200; % frecuencia maxima de la seal deseada Fs = 2*Fmax; % frequencia de muestreo t = 0:1/Fs:5; % eje de tiempo: la seal dura 5 seg. xn = sin(2*pi*50*t) + sin(2*pi*120*t) + randn(size(t)); plot(t,xn) xn_long = length (xn) % FILTRO ANTI-ALIASING: la Fcorte deber ser inferior a la Fmax Fcorte=140; WcN=Fcorte/(Fmax); [b,a]=butter(2,WcN); x_filt=filter(b,a,xn); % CLCULO DEL ESPECTRO DE POTENCIA MEDIANTE EL PERIODOGRAMA: nFFT=1024; Y=fft(x_filt,nFFT); P=Y.*conj(Y)/nFFT; % Eje de frecuencias: queremos la mitad de lo que devuelve FFT f=0:Fmax/(length(P)/2):Fmax; %Graficamos el espectro de potencias en escala logartmica: figure subplot (2,1,1) plot(f,10*log10(P(1:length(f))),'k'); xlabel('Hz') ylabel('DSP') title('Densidad Espectral de Potencia usando el PERIODOGRAMA') grid on % ANLISIS ESPECTRAL CON EL MTODO DE WELCH: window = hanning(nFFT/4); noverlap = 128; % numero de muestras de traslape [Pxx,f_welch] = pwelch(x_filt,window,noverlap,nFFT,Fs); subplot (2,1,2) plot(f_welch,10*log10(Pxx)) title('Densidad Espectral de Potencia usando la funcin pwelch') grid on

Resultados:

Comentarios: Se puede ver que con el Periodograma hay demasiada variabilidad a tal punto que se puede pensar que existen ms tonos presentes pero esta duda queda resuelta con el mtodo de Welch que indica claramente solamente dos tonos (hay muy poca variabilidad).

PROGRAMA: Comparacin PERIODOGRAMA vs Welch (seal externa).


% Mtodo del periodograma y de Welch: clear all; close all; fmax=50; fm=2*fmax; nFFT= 1024; longitud de ventana LongVentana=1000; Solapamiento=500; load signal_1.mat; x1=A; % FILTRO PASO BANDA (4-40)Hz: WcN=[4 40]/fmax; [b,a]=butter(2,WcN); x_filt=filter(b,a,x1); L=length(x_filt); % Clculo del espectro de potencia empleando el periodograma: Y=fft(x_filt,nFFT); P=Y.*conj(Y)/(L/2)^2; f=0:fmax/(length(P)/2):fmax; subplot(2,1,1); plot(f,P(1:length(f))); xlabel('Hz') ylabel('P( f )') title('Periodograma') % Frecuencia mxima de la seal % Teorema del muestreo % Zero-padding si nFFT mayor que % Clculo del espectro de potencia empleando el mtodo de Welch: [P_welch,F_welch] = pwelch(x_filt,nFFT,fm,LongVentana,Solapamiento); subplot(2,1,2); plot(F_welch,P_welch,'r'); xlabel('FREC (Hz)'); ylabel('DSP'); title('DSP empleando el mtodo de Welch');

Resultados:
LongVentana=100; Solapamiento=50; LongVentana=1000; Solapamiento=500;

Tpicos a cubrir en cuanto a seales (fuentes):


- Clasificacin de fuentes de informacin.
- Discretizacin de seales (teorema del muestreo) - Generacin de seales discretas. - Seales analgicas vs seales digital: varios efectos usando seales digitales (amplificacin, inversin, eco, etc). - Anlisis espectral: componentes de frecuencia de una seal discreta. - Filtros digitales.

FILTROS DIGITALES

GENERALIZACIN DE UN SISTEMA DISCRETO VISTO COMO FILTRO DIGITAL:


Asumiendo a(1) = 1 Salida = f ( entradas actual y pasadas , salidas pasadas )

Clculo de la salida, asumiendo condiciones iniciales = 0:

En matlab, esto es computado por la funcin FILTER

LA FUNCIN FILTER: detalles de cmo trabaja?

A = [a1 a2 ... an]; B = [b1 b2 ... bn]


Y = filter (B, A, X) Y = filter (B, A, X, C.I)

FILTER:
Dados A, B y X: Obtiene la salida Y

FILTROS IIR
Tenemos dos tipos de filtros IIR: a) Analgicos y b) Digitales.

VISIN GLOBAL DE FILTROS DIGITALES CON MATLAB

Los filtro IIR pueden ser diseados en dos fases: Fase 1: determinacin de los coeficientes del filtro (funcin yulewalk): [b,a] = yulewalk(n,f,m); % YuleWalker IIR Filter

Fase 2: aplicacin de los parmetros anteriores al clculo de la salida del filtro (funciones filter y filfilt): x_filt=filter(b,a,x); % x: la seal a filtrar ; (b,a): los coeficientes del filtro

DISEO DETALLADO DE FILTROS IIR digitales

Clculo de coeficientes:
Obtiene los coef. A y B al resolver las ecuaciones modificadas de Yule-Walker n: orden del filtro F: vector [fo f1 f2 ... Fmax] / Fmax; Fmax = fs / 2 M: vector [mo m1 m2 ... m] (ganancia)

Cul es la respuesta en frecuencia real del filtro obtenido???

FREQZ:
Da la respuesta en frecuencia evaluada en N puntos (defecto:512) equiespaciados de la mitad superior del crculo unidad

Fs: frec. muestreo Freqz (B, A, N, Fs): Grafica el (mdulo y la fase) vs frecuencia

Ejercicio:

Disee un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real.

Resolucin:

Disee un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real.
m = [0 0 1 1 0 0 1 1 0 0]; f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1]; [b,a] = yulewalk(10,f,m); [h,w] = freqz(b,a,128); plot(f,m,w/pi,abs(h)) title('Respuestas ideal y real (magnitud: escala lineal)') Figure

% Respuesta en frecuencia: % Diagrama de Bode


% (respuesta en magnitud y en fase): %ver respuesta en frecuencia en 128 puntos freqz(b,a,128); %Obs: la frec. Est normalizada title(Diagrama de Bode(magnitud: escala en dB)') % Obs: respuesta en fase: No Lineal

Diagrama de Bode:

% Obs: respuesta en mdulo: Filtro multibanda % Obs: respuesta en fase: No Lineal

Ejemplo:
clear all;close all;clc;
Fmax=140; fs=2.1*Fmax; t=0:1/fs:5; x=sin(2*pi*t*100)+sin(2*pi*t*120)+sin(2*pi*t*140);
%espectro senal filtrada: [P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_uno,LongVentana,Solapamiento,nFFT,f s); subplot(4,1,2) plot(F_welch_BB_filt,P_welch_BB_filt,'r') % 2. Filtrado del segundo tono: f1=[0 110 115 120 125 130 140]/Fmax; m1=[0 0 1 1 1 0 0]; [b1,a1]=yulewalk(orden,f1,m1); senial_filtrada_dos=filter(b1,a1,x); %espectro senal filtrada: [P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_dos,LongVentana,Solapamiento,nFFT,f s); subplot(4,1,3) plot(F_welch_BB_filt,P_welch_BB_filt,'r') % 3. Filtrado del tercer tono: f1=[0 110 115 120 125 130 140]/Fmax; m1=[0 0 0 0 0 1 1]; [b1,a1]=yulewalk(orden,f1,m1); senial_filtrada_tres=filter(b1,a1,x); %espectro senal filtrada: [P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_tres,LongVentana,Solapamiento,nFFT,f s); subplot(4,1,4) plot(F_welch_BB_filt,P_welch_BB_filt,'r')

nFFT=1024; LongVentana= nFFT/4; Solapamiento =LongVentana/2;


[P_welch_BB,F_welch_BB] = pwelch(x,LongVentana,Solapamiento,nFFT,fs); subplot(4,1,1) plot(F_welch_BB,P_welch_BB,'r') % 1. Filtrado del primer tono: orden=25; f1=[0 100 105 110 140]/Fmax; m1=[1 1 1 0 0]; [b1,a1]=yulewalk(orden,f1,m1); senial_filtrada_uno=filter(b1,a1,x);

Resultados:

FILTROS IIR ANALGICOS:

VEAMOS PARA EL CASO PARTICULAR DE FILTROS PASA BAJAS:

BUTTERWORTH: MXIMAMENTE PLANOS (no hay rizado)

Magnitude:

Lowpass Bessel filter: H(s) = 1/BN(s) where BN(s) = Sk=0N aksk is the Nth-order Bessel polynomial.

Phase: Lowpass Butterworth filter:

|H(W)|2 = 1/[1 + (W/Wc)2N] = 1/[1 + e2(W/Wp)2N]

77

CHEBYSHEV TIPO I y II: (rizado solo en una de las bandas) solo magnitud Frequency response of lowpass Type I Chebyshev filter |H(W)|2 = 1/[1 + e2TN2(W/Wp)]

Frequency response of lowpass Type II Chebyshev filter |H(W)|2 = 1/[1 + e2{TN2(Ws/Wp)/TN2(Ws/W)}]

78

ELPTICOS: rizado en ambas bandas (magnitud)

|H(W)|2 = 1/[1 + e2UN(W/Wp)]

Magnitude-squared frequency response characteristics of lowpass elliptic filters.

VISIN GLOBAL DE FILTROS IIR ANALGICOS CON MATLAB

Los filtros IIR analgicos, pueden ser diseados en tres fases: Fase 1: determinacin del orden del filtro requerido segn condiciones de diseo (rizados, frecuencias de corte, etc). Fase 2: determinacin de los coeficientes del filtro (funciones segn el filtro a utilizar (butter, etc)).

Fase 3: aplicacin de los parmetros anteriores al clculo de la salida del filtro (funciones filter y filfilt).

Recordemos los distintos tipos de filtros analgicos que existen:

FILTROS IIR ANALGICOS EN MATLAB:


CON FASE 1:

SIN FASE 1:

% Example: sin fase 1: % Plot the frequency response curves % (in db) obtained from % an 8th-order lowpass filter using the Butterworth, %Chebyshev Type I and II, and % elliptic filters. Use a cutoff frequency of 200 Hz and % assume a sampling frequency % of 2 kHz. For all filters, the passband ripple should % be less than 3 db % and the minimum stopband attenuation should be 60 db. % Frequency response of four 8th-order lowpass filters % N = 256; % Spectrum number of points fs = 2000; % Sampling filter n = 8; % Filter order wn = 200/fs/2; % Filter cutoff frequency rp = 3; % Maximum passband ripple in db rs = 60; % Stopband attenuation in db % % %Butterworth [b,a] = butter(n,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,1); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi% bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Butterworth'); %

%Chebyshev Type I [b,a] = cheby1(n,rp,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,2); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visibility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Chebyshev I'); % % Chebyshev Type II [b,a] = cheby2(n,rs,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,3); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi% bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Chebyshev II'); % Elliptic [b,a] = ellip(n,rp,rs,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,4); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi% bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Elliptic');

Ejemplo de filtros analgicos:


Ver ppt adicional sobre detalle de diseo de filtros

FILTROS DIGITALES FIR

FUNCIONES DE MATLAB PARA EL DISEO DE FILTROS FIR

FIR:

Ventaja: son de fase lineal.

Desventaja: requieren orden MAYOR que los IIR

Filtro digital (solo desde fase 2): Fase 1: se conoce ya el orden del filtro (n) Fase 2: clculo de los coeficientes: utilizar las siguientes posiblidades segn el caso:
b = fir1 (n, wn, type, ventana);
% n = orden del filtro; wn= vector de frecuencias normalizado, type= high (pasa alta), stop (elimina banda) % ventana = blackman, hamming, hanning, etc) b = fir2 (n, f, A, ventana); % n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias b = remez (n, f, A); % CASI SIMILAR AL FIR2 % n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias

Fase 3: salida del filtro utilizando el coeficiente calculado anteriormente:

x_filt=filter(b,1,x);

% x: la seal a filtrar ; b,a=1: los coeficientes del filtro

EJEMPLO FILTROS FIR: usando FIR1


% Disee un filtro pasa banda entre 5 y 15 Hz. % Asuma una frecuencia de muestreo de 100 Hz. % Orden del filtro = 128 % clear all; close all; fs = 100; % frecuencia de muestreo Fmax = fs/2; order = 128; % Orden del filtro wn = [5 15]/ Fmax; % vector de ftrecuencias b = fir1(order,wn); % diseo del filtro FIR,

% Respuesta en frecuencia: % Diagrama de Bode


freqz(b,1,512,100);

% Plot modulo de h: [h,freq] = freqz(b,1,512,100); figure plot(freq,abs(h),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f)'); figure plot(freq,20*log10(abs(h)),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f) en dB');

DISEO DE UN FILTRO FIR (USANDO FIR2) DE ORDEN 12 Y SU RESPUESTA EN FRECUENCIA

% EJEMPLO FILTROS FIR: usando FIR2 close all; clear all; n = 12; % orden f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia m = [0 0 1 1 0 0]; b1 = fir2(n,f,m); % FIR rectangular window filter h1 = freqz(b1,1,256); plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title('FIR utilizando FIR2') legend('ideal','FIR')

OTRAS FUNCIONES DE MATLAB PARA FILTROS FIR


Ventaja: son de fase lineal. Desventaja: requieren orden MAYOR que los IIR

Clculo de coeficientes:

FASE 1

COMPARACIN: FILTROS IIR (YULEWALK) Y FIR (FIR2) Y SU RESPUESTA EN FRECUENCIA

close all; clear all; n = 12; % orden f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia m = [0 0 1 1 0 0]; [b,a] = yulewalk(n,f,m); % YuleWalker IIR Filter h = freqz(b,a,256); b1 = fir2(n,f,m); % FIR rectangular window filter h1 = freqz(b1,1,256); plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h),'--b'); % Plot: Yule-Walker filter hold on plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title(Comparacin entre IIR y FIR del mismo orden') legend('ideal','IIR','FIR') %CONCLUSIN:

%FIR requieren orden MAYOR que los IIR

APLICACIONES A ECUALIZACIN

1. Investigacin de: - AB suficiente para no alterar la percepcin del odo. - Amplificar en la zona alta del espectro y comprobar si mejora la seal.

clear all; close all; clc; %archivo original: [y_original,Fs,Nbits,Format] = wavread('ArjonaOriginal'); % sound(y_original,Fs) Fs Nbits Format %extraemos 1 solo canal canal_izquierdo_original=y_original(:,1); %sound(canal_izquierdo_original,Fs) % si reproduce

% Investigacin del AB suficiente para escuchar la cancin sin alteraciones: % Banda base: BB = canal_izquierdo_original; % Filtramos para evitar posibles complicaciones en aliassing: Fmax=Fs/2; orden = 40; wn = 5000/ Fmax; % al variar, dio 5000 que nos deja oir sin alteraciones b = FIR1(orden,wn,'low'); figure freqz(b,1,128) BB_filt=filter(b,1,BB); sound(BB_filt,Fs) % si reproduce sin alteraciones perceptibles

Al ir subiendo la f corte del filtro pasa bajas desde 1000, se encontr que en 5000 ya no se nota una alteracin perceptible y es prcticamente es igual al sonido original.

CALIDAD DEL SONIDO, FRECUENCIAS DE MUESTREO Y BITS / MUESTRA:


Calidad de sonido o aplicacin Frecuencia de muestreo BITS / MUESTRA

Telefnica

8,000 Hz

1 x 8 bits (mono)

Calidad Radio AM

11,025 Hz

1 x 8 bits (mono)

Calidad Radio FM

22,050 Hz

1 x 16 bits (mono)

CD estreo

44,100 Hz

2 x 16 bits (estreo)

Calidad DAT

48,000 Hz

2 x 16 bits (estreo)

ECUALIZACIN:
Ya que el aporte de informacin auditiva de la zona entre (2000 y 7000) es de vital importancia, entonces que tal si por medio de ecualizacin amplificamos esa zona??????

Realizacin:
% IDEA INNOVADORA: % Ya que el aporte de informacin auditiva de la zona entre (2000 y 7000) % es de vital importancia, entonces que tal si por medio de ecualizacin % amplificamos esa zona unas 10 veces ??????? % Observacin: no estamos amplificando todo, simplemente estamos % amplificando la zona de altas frecuencias que contienen informacin % auditiva importante. clear all; close all; clc; %archivo original:
[y_original,Fs,Nbits,Format] = wavread('ArjonaOriginal'); figure freqz(b,1,256); x_filt=filter(b,1,canal_izquierdo_original); % x_filt=x_filt-mean(x_filt); %sound(x_filt,Fs) % si reproduce % -----------------------------------%Espectro de potencias: nFFT=1024; LongVentana= nFFT/2; Solapamiento =LongVentana/2; % LA FUNCIN DE MATLAB pwelch: [P_welch_original,F_welch_original] = pwelch(canal_izquierdo_original,LongVentana,Solapamiento,nFFT,Fs); [P_welch_filt,F_welch_filt] = pwelch(x_filt,LongVentana,Solapamiento,nFFT,Fs); % -----------------------------------figure plot(F_welch_original,P_welch_original,'b') hold on plot(F_welch_filt,P_welch_filt,'r') legend('original', 'ecualizado') title(' espectros original y ecualizado') %axis([0 7000 0 max(P_welch_original)]) grid on
% ------------------------------------

%extraemos 1 solo canal canal_izquierdo_original=y_original(:,1); %sound(canal_izquierdo_original,Fs) % si reproduce % --------------------------% Filtro ECUALIZADOR: Fmax=Fs/2; orden = 40;
f = [0 500 1000 1200 1500 12000 15000 Fmax]/Fmax; % respuesta de frecuencia m = [0.3 0.3 0.3 1 5 25 35 35];

b = fir2(orden,f,m); % FIR rectangular window filter h1 = freqz(b,1,256); figure plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title('FIR utilizando FIR2')

% Ahora grabamos como wav a todos: %WAVWRITE(Y,FS,NBITS,WAVEFILE)

wavwrite(canal_izquierdo_original, Fs, Nbits, 'canal_izquierdo_original') wavwrite(x_filt, Fs, Nbits, 'canal_izquierdo_ecualizado')


% -----------------------------------sound(canal_izquierdo_original,Fs) % si reproduce sin alteraciones perceptibles %sound(x_filt,Fs) % si reproduce sin alteraciones perceptibles

legend('ideal','FIR', 'Location','SE')

2. Investigacin de una seal con reverberacin (habitac. Cerrada): - Leer archivos original y con reverberacin puesta con un programa comercial. - Comparar los espectros de potencia de ambos para ver en qu se diferencian. - Aplicar un ecualizador para ver si as eliminamos el efectos de la reverberacin.

Ejecutar el programa FILTROS_ECO_ECUALIZACIN

Investigacin de una seal con reverberacin:

Espectro de una cancin: hasta 1000 Hz:

Idea: ya que nuestro rango audible es hasta unos


18 KHz, se desea encontrar una zona ptima (presumiblemente en la mitad: por los 10 KHz) en la que escuchemos mejor.

Objetivo: por medio de modulacin, encontrar


la zona ptima de mejor audicin.

FIN DE LA PRIMERA PARTE BSICA DE PROCESAMIENTO DIGITAL DE SEALES:

ESTE ENTRENEMIENTO GARANTIZA QUE MANEJEMOS LAS SEALES DE COMUNICACIONES DE FORMA CORRECTA.

SE FACILITAR EL ANLISIS DE CUALQUIER SEAL DE COMUNICACIONES PARA VERIFICAR LA TEORA.

S-ar putea să vă placă și