1_SIMULACIÓN DE SISTEMAS DE COMUNICACIONES I

99
Curso básico de Sistemas de Comunicación Herramienta de simulación: MatLab “Quien no se resuelve a cultivar el hábito de pensar, se pierde el mayor placer de la vida” Thomas A. Edison Ing. Robin Alvarez Rueda, MSc, PhD

Transcript of 1_SIMULACIÓN DE SISTEMAS DE COMUNICACIONES I

Curso básico de Sistemas de Comunicación

Herramienta de simulación: MatLab

“Quien no se resuelve a cultivar el hábito de pensar, se pierde el mayor placer de la vida”

Thomas A. Edison

Ing. Robin Alvarez Rueda, MSc, PhD

SIMULACIÓN DE

SISTEMAS DE

COMUNICACIÓN

ANALÓGICOS Y DIGITALES

REPRESENTACIÓN JERÁRQUICA DE UN MODELO DE COM. DIGITALES:

Para reducir la complejidad de un modelo, se lo suele representar en forma jerárquica (en bloques funcionales llamados SUBSISTEMAS) de modo que se facilita su estudio (“divide y vencerás”) y simulación (se disminuye la carga computacional). Para el caso de un sistema de comunicaciones:

TOOLBOXES NECESARIOS PARA EL ÁREA DE COMUNICACIONES:

LOS QUE USAREMOS

Tópicos a cubrir en cuanto a señales (fuentes): - Clasificación de fuentes de información.- Discretización de señales (teorema del muestreo)

- Generación de señales discretas.

- Señales analógicas vs señales digital: varios efectos usando señales

digitales (amplificación, inversión, eco, etc).

- Análisis espectral: componentes de frecuencia de una señal discreta

- Filtros digitales.

TEORÍA DE FUENTES DE INFORMACIÓN

TIPOS DE FUENTES DE INFORMACIÓN:

A) POR SUS CARACTERÍSTICAS ESTADÍSTICAS

B) POR SU COMPORTAMIENTO EN EL TIEMPO

A) POR SUS CARACTERÍSTICAS ESTADÍSTICAS:

A1) DETERMINISTAS: no tienen incertidumbre, sus valores son conocidos.

En la naturaleza, casi no hay nada que sea determinista.

A2) ESTOCÁSTICAS O ALEATORIAS: su incertidumbre es caracterizada por su Función de Distribución de Probabilidad (FDP) o por sus momentos estadísticos (media, varianza, skewness y kurtosis).

Casi todo en la naturaleza tiende a ser estocástico y por tanto, todos nuestros estudios deberíamos orientarlos hacia este campo.

B) POR SU COMPORTAMIENTO EN EL TIEMPO:

B1) CONTINUAS (ANALÓGICAS):

Corresponde a la mayoría de los fenómenos y mediciones de la naturaleza. Puede tomar cualquier valor real.

B2) DISCRETAS: para poder procesar las señales analógicas utilizando el computador, es necesario DISCRETIZARLAS. Tomamos solo ciertos

valores de la señal continua (teorema del muestreo).

Entonces la señal resultante tendrá un valor finito de puntos (señal 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 señal discreta binaria.

En el resto del curso solo consideraremos señales discretas.

Tópicos a cubrir en cuanto a señales (fuentes): - Clasificación de fuentes de información.- Discretización de señales (teorema del muestreo)

- Generación de señales discretas.

- Señales analógicas vs señales digital: varios efectos usando señales

digitales (amplificación, inversión, eco, etc).

- Análisis espectral: componentes de frecuencia de una señal discreta

- Filtros digitales.

ANTES: ALGUNOS

CONCEPTOSNECESARIOS

Análisis de Fourier: componentes de frecuencia de la señal.

Toda señal 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,

veríamos que las componentes de frecuencia van hasta los 35 Khz????

Observación 1: Existen personas con capacidades de generar frecuencias más altas y más bajas de lo normal: soprano, …, tenor, etc (ver tabla).Observación 2: de todas estas frecuencias, el oído humano solo escucha en un rango aproximado desde 20 Hz hasta 20 KHz.Observación 3: la inteligibilidad (que se entiende lo que dice) se encuentra en las frecuencias bajas, por ello el canal telefónico restringe el AB de la voz desde 30 Hz hasta 3000 Hz.

• Veamos una comparación de rango audible entre el humano y otros animales:

??????????

LA FORMACIÓN TRADICIONAL QUE TENEMOS SOLO NOS PERMITE SER CONSUMIDORES DE

CONOCIMIENTO.

DEBEMOS SER GENERADORES DE CONOCIMIENTO (INVESTIGACIÓN).

CÓMO LO HACEMOS?

RESPUESTA: MEDIANTE EL CONOCIMIENTO DE PROCESAMIENTO

DIGITAL DE SEÑALES Y EL USO DE HERRAMIENTAS “DE SIMULACIÓN”.

DISCRETIZACIÓN DE SEÑALES ANALÓGICAS:

Ya que la simulación la realizamos con el computador, necesitamos discretizar la señal analógica. Por esta razón, solo tomamos los valores de la señal analógica cada cierto tiempo llamado período de muestreo (la inversa de la frecuencia de muestreo).

Veremos ahora los fundamentos de la discretización de señales analógicas:

Señal analógica

Toma de muestras cada Ts segundos

Señal discreta

1. ¿Cada cuanto tiempo debo tomar las muestras de modo que pueda ver qué componentes de frecuencia tiene la señal?

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 señal?

Teorema de muestreo: Fs debe ser mucho mayor que 2 * Fmax (10* Fmax)

Deducción del teorema de muestreo:

Tópicos a cubrir en cuanto a señales (fuentes): - Clasificación de fuentes de información.- Discretización de señales (teorema del muestreo)

- Generación de señales discretas.

- Señales analógicas vs señales digital: varios efectos usando señales

digitales (amplificación, inversión, eco, etc).

- Análisis espectral: componentes de frecuencia de una señal discreta.

- Filtros digitales.

Procedimiento general para generar, visualizar y escuchar (si está en el rango audible) una señal DETERMINISTA o ESTOCÁSTICA discretas:

1. Frecuencia máxima: La señal está generalmente compuesta por varias componentes de frecuencia. Debemos coger la componente de máxima frecuencia: Fmax

Ejemplo: una señal compuesta por dos tonos: uno de 50 Hz y otro de 120 Hz

Fmax = 120; Si escogemos una frecuencia inferior a esta, aparecerán frecuencias falsas. Este fenómeno de

denomina aliassing.

Si es una señal estocástica 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 información en frecuencia:

Teorema del muestreo: Para que la señal 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 señal.

A mayor valor, no ganamos nada en la determinación da las componentes de frecuencia.

b) Si nos interesa analizar o recuperar la información de forma de onda: al menos muestrear a Fs = 10*Fmax;

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

3. La función: y = sin(2*pi*50*t) + 2*sin(2*pi*120*t); Si es estocástica, tendremos su registro.

4. Gráfico temporal: plot ( t , y) o stem para no olvidar que estamos trabajando con señales discretas.

5. Escuchar el vector Y como sonido generado a una Fs: sound (vector, Fs): sound (y, Fs)

GENERACIÓN Y/ O ANÁLISIS DE SEÑALES DISCRETAS CON EL PC:

% Ejemplo: generar una señal 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 máxima:Fmax = 1000;

% Frecuencia de muestreo: Fs= 10*Fmax; % probar disminuyendo a 2*Fmax% para buena visualización de la señal

%Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final)t = (0:1/Fs:2);

%Señal a generar:y = sin(2*pi*50*t) + 2*sin(2*pi*120*t);

%Gráfico de la señal:%stem(t,y) plot (t,y) % no escuchar para evitar problemas

% Escucha la señal:%sound (y, Fs) % no graficar para evitar tiempos

SEÑALES DETERMINISTAS DISCRETAS:

Zoom:

% 1. Análisis 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 máxima: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 visualización de la señal %Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final) t = (0:1/Fs:2); %Señal a generar: y = 2*sin(2*pi*i*t); % Escucha la señal: sound (y, Fs) disp(i) pause % mientras no demos ENTER, no avanza el % programa.

end

Ejemplo 2: Emplear los conocimientos anteriores para analizar su rango personal de audición. Verificar todo con osciloscopio un analizador de espectros.

% 2. Análisis 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; clcfor i=1000:100:2500 Fmax = i; % No nos interesa visualizarla pues consume recursos % y se ralentiza el programa. Entonces: Fs= 10*Fmax; % para buena visualización de la señal %Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final) t = (0:1/Fs:2); %Señal a generar: y = 1*sin(2*pi*i*t);% % priemro graficamos pero sin escuchar:% figure% plot(t,y) % Escucha la señal pero sin graficar: disp(i) sound (y, Fs)end

BARRIDO EN FRECUENCIAS:

Similar al barrido que realizamos con el lazo FOR, tenemos una función que lo realiza automáticamente: la función CHIRP.

SEÑAL CHIRP: (modulación lineal en frecuencia, amplitud constante)

% Formato:

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

% Realización general:

% 1. Fmáx = F_final;

% 2. Frecuencia de muestreo = mínimo el doble de la Fmax: Fs = 10*Fmax;% 3. Base de tiempos: t = (0: 1 / Fs : tiempo de demora)% 4. Señal a generar: Chirp ( base de tiempo, F_inicial, tiempo de demora, F_final )

% 5. Gráfico de la señal: plot(t,y)

% 6. Visualización 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)

% Señal triangular: PENDIENTE: ejercicio

% Señal 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])figureplot(t,x), axis([0 0.2 -1 1])

% Señal SINC:

x = linspace(-5,5);y = sinc(x);plot(x,y)

% Señal diente de sierra:Fmax = 50;

Fs = 10000;

t = 0:1/Fs:1.5;

x = sawtooth(2*pi*Fmax*t);

plot(t,x), axis([0 0.2 -1 1])

OTRAS FUNCIONES DE MATLAB:

Tópicos a cubrir en cuanto a señales (fuentes): - Clasificación de fuentes de información.- Discretización de señales (teorema del muestreo)

- Generación de señales discretas.

- Señales analógicas vs señales digital: varios efectos usando señales

digitales (amplificación, inversión, eco, etc).

- Análisis espectral: componentes de frecuencia de una señal discreta

- Filtros digitales.

Usaremos una señal DISCRETA de audio

e introduciremos algunos

efectos que serían tal vez imposibles con una señal analógica.

- Ver programas (cool edit y DJ)

- Hacer efectos en matlab

(amplitud, eco, velocidad, desvanecimiento, ruido)

SEÑAL ANALÓGICA VS SEÑAL DIGITAL

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

% Obtenemos la señal original (estereo):

clear all; close all;

%archivo original:[y_original,Fs,format] = wavread('ArjonaOriginal');size(y_original) %2 canales (estereo): 569039 filas por 2columnasplot(y_original) % se verifica dos señales diferentestitle('señal original (estereo)')% sound(y_original,Fs)

canal_izquierdo_original=y_original(:,1);%extraemos 1 solo canalsize(canal_izquierdo_original) %569039 filas por 1 columnas

figureplot(canal_izquierdo_original)title('señal original canal izquierdo')

%quitar todos los plots%sound(canal_izquierdo_original,Fs) % si reproduce

Para archivos .mp3: usar la función externa mp3read

Añadiendo efectos: eco (señal retardada y de menor amplitud)

% Al anterior programa, añadimos lo siguiente:

% 1. Introducción de ecotiempo_retardo=0.7;retardo=tiempo_retardo*Fs;

%Añadimos a la señal original, la misma señal 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;

figuresubplot(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 gráfica.

1. Efecto Eco:

2. Efecto: alteración de la amplitud

% 2. Alteración de la amplitud:

Factor_amplitud= 2;y_amp= Factor_amplitud * canal_izquierdo_original;

figuresubplot(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);

figuresubplot(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: más rápido o más lento (variando la Fs)

% 4. Alteración de la velocidad:

% 4.1 Más lento (menor frecuencia de muestreo)

nueva_Fs= Fs / 2;%sound(canal_izquierdo_original, nueva_Fs)

% 4.1 Más rápido (mayor frecuencia de muestreo)

nueva_Fs= 2 * Fs;%sound(canal_izquierdo_original, nueva_Fs)

CONCLUSIÓN:

EL TRATAMIENTO Y MANIPULACIÓN DE SEÑALES DIGITALES ES MUCHO MÁS FÁCIL y POTENTE QUE CON

SEÑALES ANALÓGICAS ( A VECES PUEDE SER IMPOSIBLE), PUES PERMITE LA UTILIZACIÓN DE ALGORITMOS DE

PROCESAMIENTO DIGITAL DE SEÑALES.

ESTE ENTRENAMIENTO SERÁ CLAVE PARA ANALIZAR SEÑALES

DE COMUNICACIONES

Tópicos a cubrir en cuanto a señales (fuentes): - Clasificación de fuentes de información.- Discretización de señales (teorema del muestreo)

- Generación de señales discretas.

- Señales analógicas vs señales digital: varios efectos usando señales

digitales (amplificación, inversión, eco, etc).

- Análisis espectral: componentes de frecuencia de una señal discreta.

- Filtros digitales.

TRANSFORMADA DE FOURIER PARA FUNCIONES DE TIEMPO DISCRETO:

Si una señal 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:

Resolución: La TFTD está dada por:

Problema: no podemos hacerlo en matlab pues es continuo desde

– infinito hasta + infinito. Además es compleja.

Solución: La TFTD tiene dos propiedades importantes:

1. PERIODICIDAD: la TFTD es periódica en w con período 2 pi

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

2. SIMETRÍA: para x(n) real, la TFTD es conjugada simétrica.

IMPLICACIONES: para saber cómo es basta considerar solo medio período. Se suele utilizar

CÁLCULO DE LA TFTD USANDO LA TRANFORMADA DE FOURIER

DISCRETA (TFD)

INGLÉS: DFT

Para una sola muestra X (k):Deberemos hacer N multiplicaciones complejas y (N-1) sumas complejas.Como k varía desde 0 hasta N-1, todos los valores de X (k) requieren:N2 multiplicaciones complejasN(N-1) casi es N2 sumas complejas.

Sería un cálculo numérico muy ineficiente. SOLUCIÓN:Entonces se ideó un grupo de algoritmos llamados Transformada Rápida de Fourier (FFT).

Cantidad de operaciones requeridas para calcular la DFT:

TRANSFORMADA RÁPIDA 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 MÓDULO DEL VECTOR COMPLEJO OBTENIDO CON LA FFT, SE DENOMINA:

PERIODOGRAMA

PROCEDIMIENTO PARA OBTENER EL PERIODOGRAMA:

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

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

1. Fijamos el número de muestras del espectro teórico (función continua con período 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 módulo y ángulo. Nos interesa el módulo:

3. El módulo lo podemos calcular mediante la multiplicación del vector por su conjugada: P1=Y.*conj(Y)/nFFT4. Fijamos el eje de frecuencias de modo que solamente visualicemos la mitad del espectro ya que la

otra mitad es simétrica: f=0:Fmax/(length(P1)/2):Fmax, donde Fmax es la frecuencia máxima de la señal que estamos analizando. Si es una señal estocástica, dicha Fmax será establecida mediante un filtro antialiasing.

5. Graficamos el módulo del espectro vs la frecuencia ya sea en escala lineal o en escala logarítmica.

Ejemplo: Generar una señal compuesta por dos tonos ( de 50 y 120 Hz) a la cual se le añade ruido con una FDP de tipo normal o gaussiano y que dure 5 seg. Verificar, mediante el periodograma, que dichos tonos están presentes.

close all; clear all; clc;

% Señal contaminada con ruido es una señal estocástica y por tanto no % podemos garantizar que tenga una frecuencia máxima determinada. % Para poder realizar el procedimiento conocido, debemos poner un % filtro antialiasing que sí nos permita garantizar una frecuencia % máxima, por ejemplo de 200 Hz:

Fmax= 150; % frecuencia maxima de la señal deseada

Fs = 2*Fmax; % frequencia de muestreot = 0:1/Fs:5; % eje de tiempo: la señal 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 FmaxFcorte=140; WcN=Fcorte/(Fmax);[b,a]=butter(2,WcN); x_filt=filter(b,a,xn);

% Cálculo 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 complejoP1=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 simétrica:

f=0:Fmax/(length(P1)/2):Fmax;

% Visualización la mitad del espectro de potencia, la otra % mitad es simetrica:

figuresubplot(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:.

Observación: si bien los dos tonos tienen el mismo tamaño en el tiempo, en frecuencia tienen distinta potencia debido a la señal randómica añadida. 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

Conclusión importante: todo algoritmo que estemos probando, siempre deberá ser sometido a distintas condiciones de ruido de forma controlada:

Cómo determinamos cuánto ruido se ha introducido en nuestra señal ?

CALIDAD DE LA SEÑAL OBTENIDA:

Hasta aquí hemos introducido ruido de manera descontrolada

RELACIÓN

SEÑAL A RUIDO

Consideraremos ruido gaussiano blanco:

RELACIÓN SEÑAL A RUIDO

- Señal: onda o señal de interés: nuestra señal a transmitir

- Ruido: todo lo demás que se introduce aleatorialmente

- Cálculo de la relación señal a ruido (dB):- Relación señal a ruido (en escala lineal):

Ejemplos:

10 dB: valor RMS de la señal es 10 veces el valor RMS del ruido (10 10/10 )-10 dB: valor RMS de la señal fue 1/10 del valor RMS del ruido.

Ejemplos: rand (números randómicos uniformemente distrib.)

-10 dB: 10 ^(-10/10) = 0.1close all;clear all;

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

YA NO ES VISIBLE

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)

ES VISIBLE

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

ALGO VISIBLE

ANALIZANDO UNA SEÑAL 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 máxima. Solo

entonces podremos estar seguros de que el análisis espectral que realicemos está mostrando los resultados correctos.

Procedimiento de análisis de señales externas:

1. Leer la señal signal_1.mat mediante el comando LOAD: load signal_1.mat

2. Necesariamente se debe conocer la Fs a la cual fue muestreada. Entonces, ya conocemos el valor máximo de frecuencia hasta donde podemos analizar dicha señal: Fmax = Fs /2.

3. Para garantizar antialiasing, ponemos un filtro antialiasing.4. Para poder visualizarla en tiempo tal y como fue en la realidad, necesitamos fijar la

base de tiempos. Lo realizamos así:Tm=1/Fs; % Período 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 número de elementos que x_filt: Lplot(t,x_filt);

5. El análisis en frecuencia sería igual que antes.

% Periodograma aplicado a una señal externa:% Analizar la señal hasta 50 Hz

clear all; close all; clc;

Fs=100; % Frecuencia de muestreo conocida Fmax= Fs/2 % Frecuencia máxima de la señal

% Cargar señal 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);

% VISUALIZACIÓN de la señal en el tiempo:Tm=1/Fs; % Período de muestreoL=length(x_filt);t=0:Tm:Tm*(L-1);% Para que tenga el mismo número de elementos que x_filt: Lplot(t,x_filt);

% CÁLCULO 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 máxima del espectro:[Max,Indice] = max(P) % Entrega el max y el índice del max.F_max=f(Indice)

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

Ejemplo: Leer la señal externa llamada signal_1.mat, que fue muestreada a 100Hz. Analizar las componentes de frecuencia que contiene hasta 50 Hz. Se sabe que esta señal tiene muchos artefactos en la zona de bajas frecuencias inferiores a 4 Hz. Además calcular la frecuencia donde se da el máximo del espectro de potencias.

Resultados:

Se puede ver que la señal 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 además para N grande, es independiente de la frecuencia.

Sin embargo de todas estas desventajas, el periodograma es muy utilizado para tener una idea rápida de la DENSIDAD ESPECTRAL DE POTENCIAS DE LA SEÑAL ANALIZADA.

SOLUCIÓN:

TÉCNICAS DE MEJORADO DEL PERIODOGRAMA:

PERIODOGRAMA MODIFICADO: VENTANA DIFERENTE A LA RECTANGULAR

MÉTODO DE BARTLETT: PROMEDIADO DE PERIODOGRAMAS (REDUCIR VAR)

MÉTODOS DE WELCH:

1) División en varias porciones.

2) Uso de ventanas diferentes a la rectangular: Hamming, Hanning, Blackmann, etc.

3) Solapamiento (recomendado del 50%)

PROBLEMAS DEL PERIODOGRAMA: su variabilidad

TÉCNICAS DE MEJORADO DEL PERIODOGRAMA

Métodos de Bartlett y Welch:

WELCH: TRASLAPE + OTRAS VENTANAS

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

% Método 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 FUNCIÓN PWELCH: help (pwelch)

% Usando la función 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 FFTwindow = 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 función pwelch')

OBSERVACIÓN: 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 método de cálculo del espectro se ha reducido considerablemente.

close all; clear all; clc Fmax= 200; % frecuencia maxima de la señal deseadaFs = 2*Fmax; % frequencia de muestreot = 0:1/Fs:5; % eje de tiempo: la señal 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 FmaxFcorte=140; WcN=Fcorte/(Fmax);[b,a]=butter(2,WcN); x_filt=filter(b,a,xn); % CÁLCULO 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 FFTf=0:Fmax/(length(P)/2):Fmax;

%Graficamos el espectro de potencias en escala logarítmica:figuresubplot (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 % ANÁLISIS ESPECTRAL CON EL MÉTODO 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 función pwelch')grid on

PROGRAMA: Comparación PERIODOGRAMA vs Welch (señal externa).

Resultados:

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

% Método del periodograma y de Welch:

clear all;close all;

fmax=50; % Frecuencia máxima de la señalfm=2*fmax; % Teorema del muestreonFFT= 1024; % Zero-padding si nFFT mayor que longitud de ventanaLongVentana=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);

% Cálculo 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')

% Cálculo del espectro de potencia empleando el método 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 método de Welch');

PROGRAMA: Comparación PERIODOGRAMA vs Welch (señal externa).

Resultados:

LongVentana=1000;Solapamiento=500;

LongVentana=100;Solapamiento=50;

Tópicos a cubrir en cuanto a señales (fuentes): - Clasificación de fuentes de información.- Discretización de señales (teorema del muestreo)

- Generación de señales discretas.

- Señales analógicas vs señales digital: varios efectos usando señales

digitales (amplificación, inversión, eco, etc).

- Análisis espectral: componentes de frecuencia de una señal discreta.

- Filtros digitales.

FILTROS DIGITALES

GENERALIZACIÓN DE UN SISTEMA DISCRETO VISTO COMO FILTRO DIGITAL:

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

Cálculo de la salida, asumiendo condiciones iniciales = 0:

En matlab, esto es computado por la función FILTER

LA FUNCIÓN FILTER: detalles de cómo 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

FILTROSIIR

Tenemos dos tipos de filtros IIR: a) Analógicos y b) Digitales.

VISIÓN GLOBAL DE FILTROS DIGITALES CON MATLAB

Los filtro IIR pueden ser diseñados en dos fases:

Fase 1: determinación de los coeficientes del filtro (función yulewalk):

[b,a] = yulewalk(n,f,m); % Yule–Walker IIR Filter

Fase 2: aplicación de los parámetros anteriores al cálculo de la salida del filtro (funciones filter y filfilt):

x_filt=filter(b,a,x); % x: la señal a filtrar ; (b,a): los coeficientes del filtro

Obtiene los coef. A y B al resolver las ecuaciones modificadas de Yule-Walker

n: orden del filtroF: vector [fo f1 f2 ... Fmax] / Fmax; Fmax = fs / 2M: vector [mo m1 m2 ... m] (ganancia)

Cálculo de coeficientes:

DISEÑO DETALLADO DE FILTROS IIR digitales

Cuál 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 círculo unidad

Fs: frec. muestreo

Freqz (B, A, N, Fs): Grafica el (módulo y la fase) vs frecuencia

Diseñe un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real.

Ejercicio:

Diseñe 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 puntosfreqz(b,a,128); %Obs: la frec. Está normalizadatitle(‘Diagrama de Bode(magnitud: escala en dB)')

% Obs: respuesta en fase: No Lineal

Resolución:

Diagrama de Bode:

% Obs: respuesta en módulo: 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); 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);

%espectro senal filtrada:[P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_uno,LongVentana,Solapamiento,nFFT,fs);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,fs);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,fs);subplot(4,1,4)plot(F_welch_BB_filt,P_welch_BB_filt,'r')

Resultados:

FILTROS IIR ANALÓGICOS:

VEAMOS PARA EL CASO PARTICULAR DE FILTROS PASA BAJAS:

77

Magnitude: Lowpass Bessel filter: H(s) = 1/BN(s) where BN(s) = Sk=0

N 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]

BUTTERWORTH: MÁXIMAMENTE PLANOS (no hay rizado)

78

Frequency response oflowpass Type I Chebyshev filter

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

Frequency response oflowpass Type II Chebyshev filter

|H(W)|2 = 1/[1 + e2{TN2(Ws/Wp)/TN

2(Ws/W)}]

CHEBYSHEV TIPO I y II: (rizado solo en una de las bandas) solo magnitud

Magnitude-squared frequency response characteristics of lowpass elliptic filters.

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

ELÍPTICOS: rizado en ambas bandas (magnitud)

VISIÓN GLOBAL DE FILTROS IIR ANALÓGICOS CON MATLAB

Los filtros IIR analógicos, pueden ser diseñados en tres fases:

Fase 1: determinación del orden del filtro requerido según condiciones de diseño (rizados, frecuencias de corte, etc).

Fase 2: determinación de los coeficientes del filtro (funciones según el filtro a utilizar (butter, etc)).

Fase 3: aplicación de los parámetros anteriores al cálculo de la salida del filtro (funciones filter y filfilt).

Recordemos los distintos tipos de filtros analógicos que existen:

FILTROS IIR ANALÓGICOS 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 pointsfs = 2000; % Sampling filtern = 8; % Filter orderwn = 200/fs/2; % Filter cutoff frequencyrp = 3; % Maximum passband ripple in dbrs = 60; % Stopband attenuation in db%%%Butterworth[b,a] = butter(n,wn); % Determine filter coefficients[h,f] = freqz(b,a,N,fs); % Determine filter spectrumsubplot(2,2,1);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visi-% bilityxlabel('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 spectrumsubplot(2,2,2);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visibilityxlabel('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 spectrumsubplot(2,2,3);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visi-% bilityxlabel('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 spectrumsubplot(2,2,4);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visi-% bilityxlabel('Frequency (Hz)'); ylabel('X(f)(db)');title('Elliptic');

Ejemplo de filtros analógicos:

Ver ppt adicional sobre detalle de diseño de filtros

FILTROS DIGITALES FIR

FIR: Filtro digital (solo desde fase 2):

Fase 1: se conoce ya el orden del filtro (n)

Fase 2: cálculo de los coeficientes: utilizar las siguientes posiblidades según 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 señal a filtrar ; b,a=1: los coeficientes del filtro

FUNCIONES DE MATLAB

PARA EL DISEÑO DE FILTROS FIR

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

% Diseñe 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 filtrown = [5 15]/ Fmax; % vector de ftrecuenciasb = fir1(order,wn); % diseño 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);

figureplot(freq,abs(h),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f)');

figureplot(freq,20*log10(abs(h)),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f) en dB');

EJEMPLO FILTROS FIR: usando FIR1

DISEÑO 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; % ordenf = [0 .25 .25 .6 .6 1]; % respuesta de frecuenciam = [0 0 1 1 0 0];

b1 = fir2(n,f,m); % FIR rectangular window filterh1 = freqz(b1,1,256);plot(f,m,'k'); % Plot: respuesta ideal hold onw = (1:256)/256;plot(w,abs(h1),':r'); % Plot: FIR filterxlabel(' Frequencia Relativa');

title('FIR utilizando FIR2')legend('ideal','FIR')

OTRAS FUNCIONES DE MATLAB PARA FILTROS FIR

Cálculo de coeficientes:

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

FASE 1

COMPARACIÓN: FILTROS IIR (YULEWALK) Y FIR (FIR2)

Y SU RESPUESTA EN FRECUENCIA

close all; clear all;n = 12; % ordenf = [0 .25 .25 .6 .6 1]; % respuesta de frecuenciam = [0 0 1 1 0 0];[b,a] = yulewalk(n,f,m); % Yule–Walker IIR Filterh = freqz(b,a,256);b1 = fir2(n,f,m); % FIR rectangular window filterh1 = freqz(b1,1,256);plot(f,m,'k'); % Plot: respuesta ideal hold onw = (1:256)/256;plot(w,abs(h),'--b'); % Plot: Yule-Walker filterhold onplot(w,abs(h1),':r'); % Plot: FIR filterxlabel(' Frequencia Relativa');

title(‘Comparación entre IIR y FIR del mismo orden')legend('ideal','IIR','FIR')

%CONCLUSIÓN:

%FIR requieren orden MAYOR que los IIR

APLICACIONES A

ECUALIZACIÓN

1. Investigación de:

- AB suficiente para no alterar la percepción del oído.

- Amplificar en la zona alta del espectro y comprobar si mejora la señal.

clear all; close all; clc;

%archivo original:[y_original,Fs,Nbits,Format] = wavread('ArjonaOriginal');% sound(y_original,Fs)

FsNbitsFormat

%extraemos 1 solo canalcanal_izquierdo_original=y_original(:,1);%sound(canal_izquierdo_original,Fs) % si reproduce ¡

% Investigación del AB suficiente para escuchar la canción 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 alteracionesb = FIR1(orden,wn,'low');

figurefreqz(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 alteración perceptible y es prácticamente es igual al sonido original.

Calidad de sonido o aplicación

Frecuencia de muestreo

BITS / MUESTRA

 Telefónica 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 estéreo 44,100 Hz

 2 x 16 bits (estéreo)

 Calidad DAT 48,000 Hz 

 2 x 16 bits (estéreo)

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

ECUALIZACIÓN:

Ya que el aporte de información auditiva de la zona entre (2000 y 7000) es de vital importancia, entonces que tal si por medio de ecualización amplificamos esa zona??????

Realización:

% IDEA INNOVADORA:% Ya que el aporte de información auditiva de la zona entre (2000 y 7000)% es de vital importancia, entonces que tal si por medio de ecualización % amplificamos esa zona unas 10 veces ???????

% Observación: no estamos amplificando todo, simplemente estamos% amplificando la zona de altas frecuencias que contienen información% auditiva importante.

clear all; close all; clc;%archivo original:[y_original,Fs,Nbits,Format] = wavread('ArjonaOriginal');

%extraemos 1 solo canalcanal_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 frecuenciam = [0.3 0.3 0.3 1 5 25 35 35];

b = fir2(orden,f,m); % FIR rectangular window filterh1 = freqz(b,1,256);

figureplot(f,m,'k'); % Plot: respuesta ideal hold onw = (1:256)/256;plot(w,abs(h1),':r'); % Plot: FIR filterxlabel(' Frequencia Relativa');title('FIR utilizando FIR2')legend('ideal','FIR', 'Location','SE')

figurefreqz(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 FUNCIÓN 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);

% ------------------------------------figureplot(F_welch_original,P_welch_original,'b')hold onplot(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

% ------------------------------------

% 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

2. Investigación de una señal con reverberación (habitac. Cerrada):

- Leer archivos original y con reverberación 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 reverberación.

Ejecutar el programa FILTROS_ECO_ECUALIZACIÓN

Investigación de una señal con reverberación:

Espectro de una canción: 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 modulación, encontrar la zona óptima de mejor audición.

FIN

DE LA

PRIMERA PARTE BÁSICA

DE PROCESAMIENTO DIGITAL DE SEÑALES:

ESTE ENTRENEMIENTO GARANTIZA QUE MANEJEMOS LAS SEÑALES DE COMUNICACIONES DE FORMA

CORRECTA.

SE FACILITARÁ EL ANÁLISIS DE CUALQUIER SEÑAL DE COMUNICACIONES PARA VERIFICAR LA TEORÍA.