0% encontró este documento útil (0 votos)
63 vistas14 páginas

Preparatorio No

El documento aborda las alteraciones de la señal, incluyendo ruido, distorsión e interferencia intersimbolo (ISI), y sus causas y soluciones. También se discuten comandos de MATLAB y bloques de Simulink para analizar y simular el efecto del canal en señales transmitidas. Finalmente, se presenta un procedimiento para exportar variables entre MATLAB y Simulink, así como un código para crear una interfaz gráfica que permite la codificación de secuencias digitales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
63 vistas14 páginas

Preparatorio No

El documento aborda las alteraciones de la señal, incluyendo ruido, distorsión e interferencia intersimbolo (ISI), y sus causas y soluciones. También se discuten comandos de MATLAB y bloques de Simulink para analizar y simular el efecto del canal en señales transmitidas. Finalmente, se presenta un procedimiento para exportar variables entre MATLAB y Simulink, así como un código para crear una interfaz gráfica que permite la codificación de secuencias digitales.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Preparatorio No.

11
TEMA:

ALTERACIONES DE LA SEAL

1. OBJETIVOS
Profundizar los conocimientos sobre alteraciones de la seal como ruido,
interferencia y distorsin.
1.-Consultar acerca de las principales alteraciones de seal como
ruido, interferencia intersimbolo, distorsin y jitter. Consultar los
parmetros

bsicos

en

un

diagrama

del

ojo

identificarlos

grficamente.
Ruido: Son seales aleatorias e impredecibles del tipo elctrico originadas
en forma natural dentro o fuera del sistema.
Distorcion: Es la alteracin de la seal a la respuesta imperfecta del
sistema. A diferencia del ruido y de la interferencia, la distorsin desaparece
cuando la seal deja de aplicarse.
Interferencia Intersimbolo(ISI): Fenmeno por el cual algunas de las
componentes (energa) de un pulso determinado interfiere con el

o los

pulsos adyacentes.
Las principales causas de ISI son:
-Inexatitudes de la seal de reloj y ancho de banda insuficiente
-Distorcion de fase distorcion por retardo.
-Pequeas perturbaciones en la respuesta del canal
-Si los pulsos son filtrados inapropiadamente cuando pasan atraves del
canal
Para eliminar ISI Nyquish diseo:
-Filtro Coseno levantado
-Raz de coseno levantado
Fluctuacion de Fase (JITTER):
Se presenta como un estrechamiento y alargamiento de la anchura de los
pulsos. Este temblor de la seal es visualizable en un osciloscopio a travs
del denominado diagrama del ojo.
Se distingue tres tipos de jjiter:
-Sistematico, dependiente de la frecuencia o condicionado por el
sistema:
Tiene gran importancia para la calidad de la transmisin, pues constituye la
porcin principal del jitter total.

-No sistematico, Propio

aleatorio: Algunas de sus causas son ruido

aleatorio, diafona cambios en la longitud de La trayectoria generads por la


expansin trmica la contraccin de los medios de transmisin guiados o
por las variaciones atmosfricas de la trayectoria de un enlace via radio-Jitter debido a la justificacin o jitter de relleno: Principalmente es
generado por el proceso llevado a cabo por los multiplexores de orden
alto(PdH)
2.- Consultar sobre los comandos en Matlab para analizar el efecto
del canal en la seal transmitida filter, awgn, entre otros.
Filter: Esta funcin MATLAB filtra los datos en el vector X con el filtro
descrito

por

numerador

vector

de

coeficientes

el

coeficiente

denominador vector a.
y = filter(b,a,X)
awgn:
Esta funcin MATLAB aade ruido blanco gaussiano a la seal vector x
y = awgn(x,snr)
El snr escalar especifica la relacin de seal a ruido por muestra, en dB
3.- Consultar sobre el funcionamiento de los siguientes bloques de
Simulink:
Bernoulli Binary Generator, Gaussian Noise Generator, Error Rate
Calculation, Discrete-Time Eye Diagram Scope, AWGN Channel
Block.
Bernoulli Binary Generator:
El bloque de Bernoulli binario generador genera nmeros binarios aleatorios
usando una distribucin de Bernoulli. La distribucin de Bernoulli con
parmetro p produce cero con una probabilidad p y uno con probabilidad 1p. La distribucin de Bernoulli tiene valor medio 1-p y la varianza p (1-p). La
probabilidad de un parmetro de cero especifica p, y puede ser cualquier
nmero real entre cero y uno.

Gaussian Noise Generator:

El bloque generador de ruido gaussiano genera en tiempo discreto ruido


gaussiano blanco. Debe especificar el vector de la semilla inicial en la
simulacin.
El valor medio y la varianza pueden ser tanto escalares o vectores. Si
cualquiera de ellos es un escalar, entonces el bloque se aplica el mismo
valor a cada elemento de una salida basada en la muestra o cada columna
de una salida basada en tramas. Los elementos individuales o columnas,
respectivamente, no estn correlacionados entre s.
Cuando la varianza es un vector, su longitud debe ser la misma que la del
vector de la semilla inicial. En este caso, la matriz de covarianza es una
matriz diagonal cuyos elementos diagonales venir del vector varianza. Dado
que los elementos fuera de la diagonal son cero, la salida variables
aleatorias gaussianas no estn correlacionados.
Cuando la varianza es una matriz cuadrada, representa la matriz de
covarianza. Sus elementos fuera de la diagonal son las correlaciones entre
pares de salida variables aleatorias gaussianas. En este caso, la matriz de
varianza debe ser definida positiva, y debe ser N-por-N, donde N es la
longitud de la semilla inicial.

Error Rate Calculation:


El bloque de clculo Error Rate compara los datos de entrada de un
transmisor con datos de entrada de un receptor. Se calcula la tasa de error
como una estadstica de funcionamiento, dividiendo el nmero total de
pares desiguales de elementos de datos por el nmero total de elementos
de datos de entrada procedentes de una fuente.
Utilice este bloque para calcular cualquiera de estos smbolos o la tasa de
error de bits, ya que no tiene en cuenta la magnitud de la diferencia entre
elementos de datos de entrada. Si las entradas son bits, entonces el bloque

calcula la tasa de error de bit. Si las entradas son smbolos, entonces se


calcula la tasa de error de smbolo.

Discrete-Time Eye Diagram Scope:


El bloque Alcance Tiempo Discreto Diagrama Ojo muestra varias huellas de
una seal modulada para producir un diagrama de ojo. Usted puede utilizar
el bloque para revelar las caractersticas de modulacin de la seal, como la
formacin de impulsos o distorsiones de canal.
El bloque Alcance Tiempo Discreto Diagrama de ojos tiene un puerto de
entrada. Este bloque acepta una seal de entrada vector escalar de valor o
columna. El bloque acepta una seal con los siguientes tipos de datos:
dobles, individuales, booleanos, enteros base y tipos de datos de punto fijo
para la entrada, pero arroja como doble antes de mostrar los resultados.

AWGN Channel Block:


El bloque AWGN Channel aade ruido blanco gaussiano a una seal de
entrada real o complejo. Cuando la seal de entrada es real, este bloque
aade ruido gaussiano real y produce una seal de salida real. Cuando la
seal de entrada es complejo, este bloque aade ruido gaussiano complejo
y produce una seal de salida compleja. Este bloque hereda su tiempo de
muestreo de la seal de entrada.
Este bloque acepta una seal de entrada vector o matriz valorada escalar
con un tipo de datos de tipo simple o doble. La seal de salida hereda tipos
de datos portuarios de las seales que controlan el bloque.

3.- Consultar el procedimiento completo para exportar variables


desde el workspace de Matlab hacia Simulink y viceversa.
Exportar Variables de Simulink a Matlab

Se usa un bloque de toworkspace para exportar de simulink a matlab


la variable que deseamos asimismo para exportar la variable de
tiempo.
Para esto debemos modificar la ventaba de toworkspace

Ponemos

en

save

format

modo

array

automticamente se exportaran la variables.


Exportar Variables de Matlab a Simulink
Para exportar de matlab a simulink
Se usa el comando
assignin('base','tiempo',senal');
assignin('base','tiempo',tiempo');
senal es la seal que se quiere exportar

al

correr

simulink

tiempo es la seal de tiempo a exportar


Para usar estas variables se usa el bloque
From Workspace
Se debe modificar de la siguiente manera.

4.-Realizar un GUI en Matlab que permita seleccionar la codificacin, introducir


una secuencia digital, codificar la secuencia, pasarla por un canal AWGN en base a
los siguientes datos:
GR5: Viernes 14-16: AMI y 4B3T, SNR = 5 dB
CODIGO DEL MENU

function ayuda_Callback(hObject, eventdata, handles)


% hObject
handle to ayuda (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
%mediante get rescupero al variable y analizo con value para que se
%despliegue la informacion acerca del Programa
ayud=get([Link],'Value');
if ayud==1
ese

%Propiedad Tag es Visible la ubico en On para que se aparezca en


%momento y no desde el principio de la interfaz
text=get(handles.contenido1,'visible');
set(handles.contenido1,'visible','on')

end
% --- Executes on button press in salir.
function salir_Callback(hObject, eventdata, handles)
% hObject
handle to salir (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
%Boton Salir para dar por terminado el programa y finalizar de la
Interfaz
%Mensaje de Pregunta si es Si, mediante if cierra el programa con
close
a=questdlg('Desea salir del programa','SALIR');
if a== 'Yes'
close
end
% --- Executes on button press in op1.
function op1_Callback(hObject, eventdata, handles)
% hObject
handle to op1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of op1


%Habilito con un if la opcion 1 y si el Usuario la pulsa se habilitara
%la primera interfaz en un nuevo GUI, primero
op=get(handles.op1,'Value');
if op==1
close all; clc; preparatori11;
end
% --- Executes on button press in op2.
function op2_Callback(hObject, eventdata, handles)
% hObject
handle to op2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of op2
%Opcion que habilita la segunda Interfaz declarando una variable get y
con
%Value para mediante el if, seleccionar la op2 en la interfaz proyecto
2
op=get(handles.op2,'Value');
if op==1
close all; clc; preparatori12;
end

CODIGO DE LA CODIFICACIN 4B3T

function edit1_Callback(hObject, eventdata, handles)


% hObject
handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text


%
str2double(get(hObject,'String')) returns contents of edit1
as a double

% --- Executes during object creation, after setting all properties.


function edit1_CreateFcn(hObject, eventdata, handles)
% hObject
handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
valor=get(handles.edit1,'string');
datos=str2num(valor);
Tb=0.001;
a=datos(1); b=datos(2); c=datos(3); d=datos(4); e=datos(5);
f=datos(6); g=datos(7);
h=datos(8); i=datos(9); j=datos(10); KK=datos(11); l=datos(12);
t=0:1/10000000:12*(Tb);
dat=(a.*((t>0)&(t<=Tb)))+(b.*((t>Tb)&(t<=(2*Tb))))+
(c.*((t>(2*Tb))&(t<=3*Tb)))+(d.*((t>(3*Tb))&(t<=4*Tb)))+
(e.*((t>(4*Tb))&(t<=5*Tb)))+(f.*((t>(5*Tb))&(t<=6*Tb)))+
(g.*((t>(6*Tb))&(t<=7*Tb)))+(h.*((t>(7*Tb))&(t<=8*Tb)))+
(i.*((t>(8*Tb))&(t<=9*Tb)))+(j.*((t>(9*Tb))&(t<=10*Tb)))+
(KK.*((t>(10*Tb))&(t<=11*Tb)))+(l.*((t>(11*Tb))&(t<=12*Tb)));
axes(handles.axes1);
plot(t,dat);grid on;title('Seal de datos');
senal_a_enviar=datos;
senal_a_enviar=[0 0 0 0 1 0 0 0 0 1 1 0]
valin=2
len=length(senal_a_enviar);
%comprobacion de grupos de 4bits sino rellena con 0L
if mod(len,4)>0
j=4-mod(len,4);
for i=1:j
senal_a_enviar=[senal_a_enviar 0];
end
end
len=length(senal_a_enviar);
len4b3t=length(senal_a_enviar)/4;
sec1=[senal_a_enviar senal_a_enviar(len)];
%Tabla modo positivo, negativo y componente dc
modpos={[0 -1 1] [-1 1 0] [-1 0 1] [1 -1 1] [0 1 1] [0
1 1 1] [0 1 -1] ...
[1 -1 0] [1 0 -1] [1 0 0] [1 0 1] [1 1 0] [1 1 -1]
modneg={[0 -1 1] [-1 1 0] [-1 0 1] [-1 1 -1] [0 -1 -1]
-1] [1 -1 -1] [0 1 -1] ...
[1 -1 0] [1 0 -1] [-1 0 0] [-1 0 -1] [-1 -1 0] [-1
-1]};

1 0] [0 0 1] [[1 1 1]};
[0 -1 0] [0 0
-1 1] [-1 -1

modval=[0 0 0 1 2 1 1 1 0 0 0 1 2 2 1 3];
%Codificacion 4B3T
m=1;
n=4;
for i=1:len4b3t
secamod{i}=senal_a_enviar(m:n);
m=m+4;
n=n+4;
end
aux=[];
for i=1:len4b3t
a(1)=isequal(secamod{i},[0 0 0 0]);
a(2)=isequal(secamod{i},[0 0 0 1]);
a(3)=isequal(secamod{i},[0 0 1 0]);
a(4)=isequal(secamod{i},[0 0 1 1]);
a(5)=isequal(secamod{i},[0 1 0 0]);
a(6)=isequal(secamod{i},[0 1 0 1]);
a(7)=isequal(secamod{i},[0 1 1 0]);
a(8)=isequal(secamod{i},[0 1 1 1]);
a(9)=isequal(secamod{i},[1 0 0 0]);
a(10)=isequal(secamod{i},[1 0 0 1]);
a(11)=isequal(secamod{i},[1 0 1 0]);
a(12)=isequal(secamod{i},[1 0 1 1]);
a(13)=isequal(secamod{i},[1 1 0 0]);
a(14)=isequal(secamod{i},[1 1 0 1]);
a(15)=isequal(secamod{i},[1 1 1 0]);
a(16)=isequal(secamod{i},[1 1 1 1]);

end

for j=1:16
if a(j)==1
aux=[aux j];
end
end

valant=valin;
senal_codificada=[];
for i=1:len4b3t
if valant>0
senal_codificada=[senal_codificada modneg{aux(i)}];
for j=1:modval(aux(i))
valant=valant-1;%continuar al estado siguiente
if valant==0
valant=valant-1;
end
end
else
senal_codificada=[senal_codificada modpos{aux(i)}];
for j=1:modval(aux(i))
valant=valant+1;%continuar al estado siguiente
if valant==0
valant=valant+1;
end
end
end
end
senal_codificada=[senal_codificada
senal_codificada(length(senal_codificada))];
yh=senal_codificada;
m=yh(1);n=yh(2); o=yh(3); p=yh(4); q=yh(5); r=yh(6);

s=yh(7); tt=yh(8); u=yh(9); v=yh(10); %w=yh(11); x=yh(12);


cod=(m.*((t>0)&(t<=(3/2)*Tb)))+(n.*((t>(3/2)*Tb)&(t<=(3*Tb))))+
(o.*((t>(3*Tb))&(t<=(9/2)*Tb)))+(p.*((t>((9/2)*Tb))&(t<=6*Tb)))+
(q.*((t>(6*Tb))&(t<=(15/2)*Tb)))+(r.*((t>((15/2)*Tb))&(t<=9*Tb)))+
(s.*((t>(9*Tb))&(t<=(21/2)*Tb)))+(tt.*((t>((21/2)*Tb))&(t<=12*Tb)))+
(u.*((t>(12*Tb))&(t<=(27/2)*Tb)));%+(v.*((t>(9*Tb))&(t<=10*Tb)))+
(w.*((t>(10*Tb))&(t<=11*Tb)))+(x.*((t>(11*Tb))&(t<=12*Tb)));
axes(handles.axes2);
plot(t,cod,'r');grid on;title('Seal Codificada');
ruido=awgn(cod,5);
axes(handles.axes3);
plot(t,ruido,'r');grid on;title('Seal Pasada por el canal AWGN');
% hObject
handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future
% handles
structure with handles and user data
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata,
% hObject
handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future
% handles
structure with handles and user data
close all; clc; Menu;

version of MATLAB
(see GUIDATA)
handles)
version of MATLAB
(see GUIDATA)

% --- Executes on button press in pushbutton3.


function pushbutton3_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
a=questdlg('Desea salir del programa','SALIR');
if a== 'Yes'
close
end

CODIGO DE LA CODIFICACIN AMI

function edit1_Callback(hObject, eventdata, handles)


% hObject
handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
%
str2double(get(hObject,'String')) returns contents of edit1
as a double

% --- Executes during object creation, after setting all properties.


function edit1_CreateFcn(hObject, eventdata, handles)
% hObject
handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
valor=get(handles.edit1,'string');
s_enviar=str2num(valor);
tb1=0.01;
n_bits=length(s_enviar);

tb=0:1/1000:n_bits-1/1000;
s_reloj=[];
s_datos=[];
s_codificada=[];

n=1;
a1=-1
%Codificacion AMI
a=1;
while n<=n_bits;
reloj(n,:)=[ones(1,500) zeros(1,500)];
if s_enviar(n)==1
datos(n,:)=[ones(1,1000)];
a1=-a1
codificado(n,:)=[a1*ones(1,1000)];
else
datos(n,:)=[zeros(1,1000)];
codificado(n,:)=[zeros(1,1000)];
end
%construccion de los vectores de reloj, datos a codificar y datos
%codificados
s_reloj=cat(2,s_reloj,reloj(n,:));
s_datos=cat(2,s_datos,datos(n,:));
s_codificada=cat(2,s_codificada,codificado(n,:));
n=n+1;
end
%graficos de las 3 senales y de sus espectros de frecuencia
axes(handles.axes1);
plot(tb*tb1,a*s_datos)
grid on
axis([0 n_bits*tb1 -0.2 1.1*a])
title('senal de datos')
axes(handles.axes2);
plot(tb*tb1,a*s_codificada)
grid on
axis([0 n_bits*tb1 -1.1*a 1.1*a])
title('senal codificada')
ruido=awgn(s_codificada,5);
axes(handles.axes3);
plot(tb*tb1,a*ruido)
grid on
axis([0 n_bits*tb1 -1.1*a 1.1*a])
title('senal Pasada por canal awgn')

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
close all; clc; Menu;

% --- Executes on button press in pushbutton3.


function pushbutton3_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
a=questdlg('Desea salir del programa','SALIR');
if a== 'Yes'
close
end

Bibliografia

-Diapositivas del Ingeniero Hidalgo


-Diapositivas de Msc Maria Soledad Gimenez

También podría gustarte