Академический Документы
Профессиональный Документы
Культура Документы
Curso 2007-8
Transmisin Digital
Prctica 1
Introduccin
Esta primera prctica trata de familiarizar al alumno con el lenguaje de programacin Matlab, permitindole afrontar materias propias de la asignatura Transmisin Digital en las prximas prcticas. Se tratar de generar las siguientes seales: Seal aleatoria Seal sinusoidal Seal suma de dos senos Seal cuadrada peridica Seal triangular peridica. A este conjunto de seales se le deben hacer una serie de medidas adems de calcular su D.E.P y su funcin de autocorrelacin. Las medidas a realizar son: Valor medio Valor de pico Energa en el intervalo Potencia en el intervalo Factor de cresta No todas las funciones necesarias para realizar esta prctica estn desarrolladas en este documento. El objetivo que se persigue es que el alumno realice algunos ejercicios que le permitan iniciarse en el uso de Matlab ( a programar se aprende programando).1 A continuacin se describen cada una de las funciones de forma detallada.
Funcin seno(seno.m)
La funcin seno no tiene parmetros de entrada ni salida ya que todas las operaciones se realizan dentro de ella. Consta de un men por el que se le introducen los parmetros de entrada que son: inicio y fin del intervalo, frecuencia de muestreo, frecuencia, fase y amplitud de la seal. Ahora se muestra un ejemplo de la construccin de una seal seno con frecuencia 1 Hz y frecuencia de muestreo 100 Hz, intervalo de observacin 1-4 segundos, amplitud unidad y fase inicial nula.
1 0.8 0.6 0.4 Seal en el dominio del tiempo.
Curso 2007/8
Transmisin Digital
Prctica 1
El listado de la funcin seno.m es: function []=seno() % Entrada de parmetros A=input('Inicio del intervalo de observacin(sg)? '); b=input('Fin del intervalo de observacin(sg)? '); f=input('Frecuencia de la seal (Hz)? '); fs=input('Frecuencia de muestreo (Hz)?: '); fase=input('Fase de la seal (rad)? '); a=input('Amplitud de la seal (voltios)? '); % Generacin de la seal t=A:1/fs:b; % vector instantes de muestreo x=a*sin(2*pi*f*t+fase); % vector con seal seno % Visualizacin de la seal plot(t,x); title('Seal en el dominio del tiempo.'); xlabel('Tiempo'); ylabel('Amplitud'); zoom;pause;close;
El listado de esta funcin es: function []=sen_two() % Entrada de parmetros A=input('Inicio del intervalo de observacin(sg)? '); b=input('Fin del intervalo de observacin(sg)? '); fs=input('Frecuencia de muestreo (Hz)?: ');
Curso 2007/8
Transmisin Digital f1=input('Frecuencia de la 1 sinusoide (Hz)? '); fase1=input('Fase de la 1 sinusoide (rad)? '); a1=input('Amplitud de la 1 sinusoide (voltios)? '); f2=input('Frecuencia de la 2 sinusoide (Hz)? '); fase2=input('Fase de la 2 sinusoide (rad)? '); a2=input('Amplitud de la 2 sinusoide (voltios)? '); % Generacin de la seal t=a:1/fs:b; x=a1*cos(2*pi*f1*t+fase1)+a2*sin(2*pi*f2*t+fase2); % Visualizacin de la seal plot(t,x); title('Seal en el dominio del tiempo.'); xlabel('Tiempo'); ylabel('Amplitud'); zoom;pause;close;
Prctica 1
En este caso, el intervalo de observacin va desde 1 hasta 4 segundos, el periodo es 0.6 y el ciclo de trabajo es 0.2. El listado de esta funcin es: function[]=cuadro() fs=input('Frecuencia de muestreo (Hz)? '); a=input('Inicio del intervalo de observacin (sg)? '); b=input('Final del intervalo de observacin (sg)? '); T=input('Periodo (sg)? '); B=input('Ciclo de trabajo (%)? ');
Curso 2007/8
Transmisin Digital while (B>1), B=input('Introduce un ciclo de trabajo menor.'); end; A=input('Amplitud (voltios)? '); % Creacin de la funcin base n_unos=B*T*fs; n_ceros=B(1-B)*T*fs; base=[A*ones(1,n_unos) zeros(1,n_ceros)];
Prctica 1
% Creacin de la seal final t=a:1/fs/b; % Vector de instantes de muestreo LT=length(t); n_per=fix(LT/length(base)); % periodos completos de la base x=base; for i=1:n_per, x=[x base]; end x=x(1:LT); % Se afina longitud del vector % Visualizacin de la seal resultante plot(t,x); xlabel('Segundos'); ylabel('Voltage'); title('SEAL EN EL DOMINIO DEL TIEMPO');axis('auto'); zoom;pause;close;
Para este caso, la amplitud es 2 voltios, el periodo de observacin dura 4 segundos, fs=100 Hz y el periodo de la seal triangular es 1 segundo. El listado de esta funcin es: function[]=triangu() fs=input('Frecuencia de muestreo (Hz)? '); a=input('Inicio del intervalo (sg)? :');
Curso 2007/8
Transmisin Digital b=input('Final del intervalo (sg)? '); To=input('Periodo de la seal (sg)? '); A=input('Amplitud de la seal (voltios)? '); % Creacin de la funcin base base=[0:2*A/fs:A A-2*A/fs:-2*A/fs:0]; LX=length(base);
Prctica 1
% Creacin de la seal final t=a:1/fs/b; % Vector de instantes de muestreo LT=length(t); n_per=fix(LT/length(base)); % periodos completos de la base x=base; for i=1:n_per, x=[x base]; end x=x(1:LT); % Se afina longitud del vector % Visualizacin de la seal final plot(t,y); xlabel('segundos'); ylabel('Amplitud'); zoom;pause;close;
Curso 2007/8
Prctica 1
El listado de la funcin alea_nor es equivalente pero sustituyendo la llamada a la funcin de Matlab rand por randn. Ejercicio 1.- Modifique las funciones alea_uni y alea_nor para que admitan como nuevos parmetros la media y la varianza de la seal aleatoria que se desea generar. A continuacin se muestra un ejemplo de seal con f.d.p. uniforme con media 5 y varianza la unidad, fs=100Hz e intervalo de observacin desde 1 hasta 4 segundos:
7 6.5 6 5.5 5 4.5 4 3.5 3 1 1.5 2 2.5 3 3.5 4
1.5
2.5
3.5
Curso 2007/8
Transmisin Digital
Prctica 1
Funcin valores(valores.m)
Esta funcin se encarga de realizar todas las medidas definidas al principio a travs de un men. Como nico parmetro de entrada tiene el vector correspondiente a la seal de la que se quiere obtener los siguientes parmetros: Valor medio: Se calcula dividiendo la suma de los valores de cada muestra entre el nmero de muestras que hay. Es decir:
v medio =
siendo N la longitud del vector de seal x.
1 N
x(i) ,
i =1