UNIVERSIDAD TECNICA FEDERICO SANTA MARIADEPARTAMENTO DE ELECTRONICALABORATORIO DE SISTEMAS DE COMUNICACIONES
Laboratorio de Sistemas de Comunicaciones
Experiencia Banda Estrecha
Luis Vinnett Peralta13/08/2010
Laboratorio de Sistemas de Comunicaciones 2010
Tabla de contenido
Nota respecto a la Ejecución de esta Plantilla.....................................................................3Modelación..........................................................................................................................4
Funciones de densidad de probabilidad Rice y Rayleigh................................................4Simulaciones........................................................................................................................6
Distribución Rayleigh......................................................................................................6Distribución Rice.............................................................................................................6
Ajuste de Modelos...............................................................................................................8Distribución Rayleigh......................................................................................................8Distribución Rice.............................................................................................................8
Autocorrelación.................................................................................................................10
Laboratorio de Sistemas de Comunicaciones 2010
Nota respecto a la Ejecución de esta Plantilla
Al abrir esta plantilla se debe abrir Matlab, en caso contrario, significa que está mal direccionada la plantilla base (M-BOOK.dot). Para solucionar esto se debe ir a Herramientas, luego a plantillas y finalmente modificar la ruta para acceder a M-BOOK.dot. Típicamente el directorio base es matlab_dir\\notebook\pc, donde matlab_dir corresponde al directorio en el cual se encuentra instalado Matlab. Por ejemplo:
C:\Archivos de programa\MATLAB\R2010\notebook\pc\M-BOOK.dot
Tras modificar esta ruta, se debe reiniciar Word para que se almacenen los cambios. Es probable que aparezca una ventana de error al realizarse la comunicación con Matlab. Seleccionar Finalizar.
Luego, se puede ejecutar esta plantilla aplicando Ctrl+Enter dentro de cada sentencia (entre corchetes). Alt+p permite borrar los resultados y Alt+r permite ejecutar todo el documento.
Los comandos acá presentados deben ser ejecutados en orden de manera que no se produzcan errores.
Laboratorio de Sistemas de Comunicaciones 2010
Modelación
Las últimas versiones de las Toolboxes de Estadística y Comunicaciones de Matlab incluyen una serie de funciones que facilitan la modelación, simulación y análisis de datos. A continuación se detallará el uso de algunas de estas funciones las cuales resulta de utilidad para el análisis y procesamiento de los datos.
Funciones de densidad de probabilidad Rice y Rayleigh
La función de densidad de probabilidad de la distribución Rayleigh puede obtenerse mediante el comando raylpdf tal como se muestra a continuación:
clear allclose all
s = 1;r = 0:.1:5;fR = raylpdf(r, s);
plot(r, fR, 'r', 'LineWidth', 2)set(gca, 'FontName', 'times', 'FontSize', 14)xlabel('r, [V]')ylabel('Función de densidad de probabilidad')xlim([0 5])
Por otra parte, la función de distribución acumulativa Rayleigh se puede obtener mediante el comando raylcdf. Por ejemplo:
FR = raylcdf(r, s);plot(r, FR, 'r', 'LineWidth', 2)set(gca, 'FontName', 'times', 'FontSize', 14)xlabel('r, [V]')ylabel('Función de densidad de probabilidad')xlim([0 5])
Por otra parte, la función de densidad de probabilidad Rice se puede obtener mediante la función pdf. Nótese que en las siguientes líneas de código se utilizaron 2 métodos para obtener la PDF.
A = 1;s = 0.5;
Ome = 2*s^2 + A^2;K = A^2/(2*s^2);
r =0:.1:5;fR =2*(K+1)*r/Ome.*exp(-K-(K+1)/Ome*r.^2).*besseli(0, 2*r*sqrt(K*(K+1)/Ome));
Laboratorio de Sistemas de Comunicaciones 2010
plot(r, fR, 'b.', 'LineWidth', 2), hold on
fR = pdf('rician', r, A, s);
plot(r, fR, 'r', 'LineWidth', 2)xlim([0 5])hold off
Para la función de distribución acumulativa se puede emplear el comando cdf:
FR = cdf('rician', r, A, s);
plot(r, FR, 'r', 'LineWidth', 2)xlabel('r, [V]')ylabel('Función de densidad de probabilidad')xlim([0 5])
Laboratorio de Sistemas de Comunicaciones 2010
Simulaciones
Actualmente Matlab incluye la generación automática de números con distribución tipo Rayleigh o Rice mediante los comandos raylrnd y random. Por ejemplo1:
Distribución Rayleigh
Las siguientes líneas de código permiten obtener datos con distribución Rayleigh. Se grafica la ganancia de potencia en dB:
s = 1;r = raylrnd(s, 1000, 1);r = r/sqrt(mean(r.^2));
PdBm = 20*log10(r);PdBm = PdBm – mean(PdBm);
plot(PdBm)set(gca, 'FontName', 'times', 'FontSize', 14);ylabel('P, dB')ylim([-40 10])
Cuyo histograma es:
hist(r, 20)xlim([0 5])
Una estimación de la función de distribución acumulativa obtenida a partir de los datos se puede generar mediante el comando cdfplot.
cdfplot(r)xlim([0 5])
Distribución Rice
Las siguientes líneas de código permiten obtener datos con distribución riciana.
clear allclose all
A = 1;s = 0.25;
1 Nótese que los datos se normalizan tal que E[R2]=1.
Laboratorio de Sistemas de Comunicaciones 2010
K = A^2/(2*s^2);
r = random('rician', A, s, 1000, 1);r = r/sqrt(mean(r.^2));
PdBm = 20*log10(r);PdBm = PdBm – mean(PdBm);
plot(PdBm)set(gca, 'FontName', 'times', 'FontSize', 14);ylabel('P, dB')ylim([-40 10])
El histograma con 20 clases se puede obtener mediante el comando hist.
hist(r, 20)xlim([0 5])
Laboratorio de Sistemas de Comunicaciones 2010
Ajuste de Modelos
Para obtener estimaciones de parámetros se puede emplear la función mle que entrega las estimaciones de máxima verosimilitud. Por ejemplo:
Distribución Rayleigh
Primero simulemos datos con distribución Rayleigh y luego realicemos la estimación de máxima verosimilitud. También se obtiene el intervalo de confianza para los parámetros al 95%.
clear allclose all
s = 1;r = raylrnd(s, 1000, 1);hist(r, 40)xlim([0 5])
[sest, sic] = mle(r,'distribution','rayleigh', 'alpha', .05);
sest
Para graficar el ajuste se normalizará el histograma de manera que el área bajo la curva sea unitaria:
[N, X] = hist(r, 40);N = N/trapz(X, N);bar(X, N), hold on,fR = raylpdf(X, sest);plot(X, fR, 'r', 'LineWidth', 3)xlim([0 5])hold off
Veamos la función de distribución acumulativa:
cdfplot(r), hold onFR = raylcdf(X, sest);plot(X, FR, 'r', 'LineWidth', 2)xlim([0 5])hold off
Distribución Rice
Simulemos datos con distribución Riciana y luego realicemos la estimación de máxima verosimilitud.
clear all
Laboratorio de Sistemas de Comunicaciones 2010
close all
A = 1;s = 0.25;
K = A^2/(2*s^2);
r = random('rician', A, s, 1000, 1);
[parest, paric] = mle(r,'distribution','rician', 'alpha', .05);
Aest = parest(1);sest = parest(2);
[Aest, sest]
Grafiquemos el ajuste:
[N, X] = hist(r, 40);N = N/trapz(X, N);bar(X, N), hold on,fR = pdf('rician', X, Aest, sest);plot(X, fR, 'r', 'LineWidth', 3)xlim([0 5])hold off
Observemos el ajuste de la función de distribución acumulativa:
cdfplot(r), hold onFR = cdf('rician', X, A, s);plot(X, FR, 'r', 'LineWidth', 2)xlim([0 5])hold off
También es posible utilizar la GUI (graphical user interface) dfittool incluida en Matlab. Estal permite analizar los datos y realizar ajustes y estimaciones de parámetros suponiendo diferentes modelos estadísticos. Entre estos se destacan las distribuciones: gaussiana, lognormal, riciana, nakagami, entre otras. Para acceder a esta GUI basta con escribir dfittool en WorkSpace o bien mediante la Ruta: Start->Toolboxes->Statistics->Distribution Fitting Tool.
Laboratorio de Sistemas de Comunicaciones 2010
Autocovarianza
Para utilizar la función de autocovarianza implementada en Matlab se generará un canal Rice con una frecuencia doppler máxima de 100Hz. Para ello se empleará el comando ricianchan de Matlab.
clear allclose all
A = 1;s = sqrt(5)/.1;
K = A^2/(2*s^2);
chan = ricianchan(1/1000, 100, K);rcom = filter(chan, ones(1000, 1));
autocorr(rcom.^2)
De donde se puede estimar visualmente el tiempo de coherencia del canal. Para obtener el los valores de la función y realizarle algún tratamiento, lo anterior se puede reescribir como:
[acf,lags,bounds] = autocorr(rcom.^2, 30);stem(lags, acf)