Sunteți pe pagina 1din 34

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 E-Mail: arobin7es@yahoo.es / robin.alvarez@epn.edu.ec

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:

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:

APLICACIN:

DETERMINACIN DEL RANGO AUDIBLE DE UNA PERSONA: TEORA (ESQUEMA COMPLETO DEL BANCO DE EXPERIMENTACIN), IMPLEMENTACIN, RESULTADOS Y DISCUSIN

COMPARACIN CON OTROS ANIMALES

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)

VARIAS SEALES

SOPORTADAS POR MATLAB

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)

EFECTOS APLICADOS A UNA SEAL DISCRETA

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): servir para extrer partes de audio con mensaje subliminal. - 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

DEBER (Mircoles) Para archivos .mp3: usar la funcin externa mp3read

LECTURA Y ESCRITURA

EN .MP3

1. Efecto: alteracin de la amplitud: MEJORAR (TEORA, IMPLEM.)


% 1. Alteracin de la amplitud: Factor_amplitud= 2; y_amp= Factor_amplitud * canal_izquierdo_original; figure plot (canal_izquierdo_original) hold on plot (y_amp,'r:') title('canal izquierdo orinal y alterado su amplitud') legend('original', 'variado') %Verificacin auditiva: sound(canal_izquierdo_original,Fs) % si reproduce pause sound(y_amp,Fs) % si reproduce con eco, excelente

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


% Al anterior programa, aadimos lo siguiente:
% 2. 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:

ECOS MLTIPLES

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)

Deber 5: bajar cancin con mensaje subliminal

VERIFICACIN AUDITIVA:

Grabar Hola en windows 7: problema que se graba solo en .wma y matlab solo soporta .wav.
Solucin: bajar un programa convertidor: audio converter y mostrar paso a paso.

APLICACIN: INVESTIGACIN DE POSIBLES

EJEMPLOS DE MENSAJES SUBLIMINALES

Se necesita extraer porciones de audio donde supuestamente est el mensaje subliminal. Aqu se empleara el editor de audio.

VER PRESENTACIN: CARPETA: MENSAJE SUBLIMINAL

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)

Deber 6: audio ingls rpido bajar velocidad y comprender

EJEMPLOS DE INGLS: reduccin de velocidad

EFECTO:

VOZ ROBOTIZADA

Ver carpeta: Voz_robotizada

TODOS LOS EFECTOS EN TIEMPO REAL: A) EN SCRIPT B) EN SIMULINK

VER PRESENTACIN: CARPETA: EFECTOS EN TIEMPO REAL - SIMULINK

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