Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trans PDF
Trans PDF
PRÁCTICA 1
Curso 2007-8
Transmisión Digital Práctica 1
Introducción
Esta primera práctica trata de familiarizar al alumno con el lenguaje de programación Matlab,
permitiéndole afrontar materias propias de la asignatura Transmisión Digital en las próximas prácticas.
Se tratará de generar las siguientes señales:
•Señal aleatoria
•Señal sinusoidal
•Señal suma de dos senos
•Señal cuadrada periódica
•Señal triangular periódica.
A este conjunto de señales se le deben hacer una serie de medidas además de calcular su D.E.P y su
función de autocorrelación. Las medidas a realizar son:
•Valor medio
•Valor de pico
•Energía en el intervalo
•Potencia en el intervalo
•Factor de cresta
No todas las funciones necesarias para realizar esta práctica están 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 continuación se describen cada una de las funciones de forma detallada.
Función seno(seno.m)
La función seno no tiene parámetros 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 parámetros de entrada que son: inicio y fin
del intervalo, frecuencia de muestreo, frecuencia, fase y amplitud de la señal.
Ahora se muestra un ejemplo de la construcción de una señal seno con frecuencia 1 Hz y frecuencia
de muestreo 100 Hz, intervalo de observación 1-4 segundos, amplitud unidad y fase inicial nula.
Señal en el dominio del tiempo.
1
0.8
0.6
0.4
1
En el código de las funciones en MATLAB que se ofrecen se han introducido errores.
Curso 2007/8 2
Transmisión Digital Práctica 1
% Entrada de parámetros
A=input('Inicio del intervalo de observación(sg)? ');
b=input('Fin del intervalo de observación(sg)? ');
f=input('Frecuencia de la señal (Hz)? ');
fs=input('Frecuencia de muestreo (Hz)?: ');
fase=input('Fase de la señal (rad)? ');
a=input('Amplitud de la señal (voltios)? ');
% Generación de la señal
t=A:1/fs:b; % vector instantes de muestreo
x=a*sin(2*pi*f*t+fase); % vector con señal seno
% Visualización de la señal
plot(t,x);
title('Señal en el dominio del tiempo.');
xlabel('Tiempo');
ylabel('Amplitud');
zoom;pause;close;
1
Amplitud
-1
-2
% Entrada de parámetros
A=input('Inicio del intervalo de observación(sg)? ');
b=input('Fin del intervalo de observación(sg)? ');
fs=input('Frecuencia de muestreo (Hz)?: ');
Curso 2007/8 3
Transmisión Digital Práctica 1
% Generación de la señal
t=a:1/fs:b;
x=a1*cos(2*pi*f1*t+fase1)+a2*sin(2*pi*f2*t+fase2);
% Visualización de la señal
plot(t,x);
title('Señal en el dominio del tiempo.');
xlabel('Tiempo');
ylabel('Amplitud');
zoom;pause;close;
0.9
0.8
0.7
0.6
Voltage
0.5
0.4
0.3
0.2
0.1
En este caso, el intervalo de observación va desde 1 hasta 4 segundos, el periodo es 0.6 y el ciclo de
trabajo es 0.2.
El listado de esta función es:
function[]=cuadro()
fs=input('Frecuencia de muestreo (Hz)? ');
a=input('Inicio del intervalo de observación (sg)? ');
b=input('Final del intervalo de observación (sg)? ');
T=input('Periodo (sg)? ');
B=input('Ciclo de trabajo (%)? ');
Curso 2007/8 4
Transmisión Digital Práctica 1
while (B>1),
B=input('Introduce un ciclo de trabajo menor.');
end;
A=input('Amplitud (voltios)? ');
1.8
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Para este caso, la amplitud es 2 voltios, el periodo de observación dura 4 segundos, fs=100 Hz y el
periodo de la señal triangular es 1 segundo.
El listado de esta función es:
function[]=triangu()
fs=input('Frecuencia de muestreo (Hz)? ');
a=input('Inicio del intervalo (sg)? :');
Curso 2007/8 5
Transmisión Digital Práctica 1
while valorfin<=valorini,
valorfin=input('Introduzca valor final mayor: ');
end
% CALCULO DE LA SEÑAL
t=valorini:1/fs:valorfin; % vector de instantes de muestreo
x=rand(1,length(t));
% PLOTEADO DE LA SEÑAL
plot(t,x);
title('SEÑAL ALEATORIA UNIFORME');
Curso 2007/8 6
Transmisión Digital Práctica 1
xlabel('Tiempo (segundos)');
ylabel('Amplitud (Voltios)');
zoom;pause;close;
El listado de la función alea_nor es equivalente pero sustituyendo la llamada a la función de Matlab “rand”
por “randn”.
Ejercicio 1.- Modifique las funciones alea_uni y alea_nor para que admitan como nuevos
parámetros la media y la varianza de la señal aleatoria que se desea generar.
A continuación se muestra un ejemplo de señal con f.d.p. uniforme con media 5 y varianza la unidad,
fs=100Hz e intervalo de observación desde 1 hasta 4 segundos:
6.5
5.5
4.5
3.5
3
1 1.5 2 2.5 3 3.5 4
-1
1 1.5 2 2.5 3 3.5 4
Curso 2007/8 7
Transmisión Digital Práctica 1
Función valores(valores.m)
Esta función se encarga de realizar todas las medidas definidas al principio a través de un menú.
Como único parámetro de entrada tiene el vector correspondiente a la señal de la que se quiere obtener los
siguientes parámetros:
Æ Valor medio: Se calcula dividiendo la suma de los valores de cada muestra entre el número de
muestras que hay. Es decir:
N
1
v medio =
N
∑ x(i) ,
i =1
ÆPotencia de la señal en el intervalo: indica la tasa con la que es liberada la energía. Es decir:
N
1
Potencia =
N
∑x
i =1
2
(i )
while k1<6,
k1=menu('PARÁMETROS DE LA SEÑAL','Valor medio','Valor de
pico','Energia','Potencia','volver');
if k1==1
%VALOR MEDIO
suma=0;
for contador=1:length(t),
suma=suma+x(contador);
end
valor_medio=suma/length(t)
pause
end
if k1==2
%VALOR DE PICO
valor_pico=max(abs(x))
pause
end
if k1==3
%ENERGIA DE LA SEÑAL
energia=x*x’
pause
end
if k1==4
%POTENCIA MEDIA
Px=energia/length(t)
Curso 2007/8 8
Transmisión Digital Práctica 1
pause
end
end %Fin del while
Ejercicio 2.- Obtenga una función que halle la Densidad Espectral de Potencia (D.E.P.) de una señal.
Para construirla use la transformada rápida de Fourier (función “fft” de Matlab). Sus parámetros de
entrada serán la señal y la frecuencia de muestreo usada para obtener la señal. Debe representar el
resultado obtenido, apareciendo en el eje de abcisas la frecuencia en Hz y en de ordenadas la potencia
en watios. Compruebe para las funciones vistas en los apartados anteriores que los resultados
obtenidos coinciden con los teóricos. Por ejemplo, para una señal seno su D.E.P. serán dos deltas
colocadas en la frecuencia de la señal con valor Ac2/4 donde Ac es la amplitud de la señal.
Función de Autocorrelación(autocor.m)
Esta función, como su nombre indica, se encarga de calcular la función de autocorrelación de una
señal. El único parámetros de entrada es el vector que representa la señal a la que se le calcula la
autocorrelación. Dentro de la función se pide un segundo parámetro que es el máximo desplazamiento para el
que se va a calcular la autocorrelación. No hay parámetros de salida. La autocorrelación se calcula desde cero
hasta el máximo desplazamiento introducido por el teclado. La expresión que usa para calcular la función de
autocorrelación es:
N −1−τ
1
R(τ ) =
N −τ
∑ x ( n) x ( n + τ )
n=0
% INTRODUCCIÓN DE PARÁMEROS
tau=input('Número máximo de desplazamientos? ');
while tau<0,
tau=input('El número de desplazamientos debe ser mayor que cero:
');
end
% CÁLCULO DE LA AUTOCORRELACIÓN
if (tau>length(x)) % Limito el valor máximo de tau
tau=length(x);
end
auto=x*x’;
LE=length(x);
for i=1:tau,
aux=x(k+1:LE)*x(1:LE-k);
auto=[aux auto aux];
end
Curso 2007/8 9