Está en la página 1de 27

UNIVERSIDAD AUTONOMA DE NUEVO LEON

Facultad de Ingeniería Mecánica y Eléctrica

Comunicaciones Móviles
Modelo de pérdidas de propagación

Osvaldo Silva Alvarado 1591327

Aula: 7103 Hora: M4


Instructor: Alor Aguilar

02/06/2019
Introducción
En esta ocasión se analizará el ancho de haz de las antenas dependiendo de la
cantidad de elementos con los que cuente la antena y en el que además podamos
contar con cinco usuarios diferentes para graficar distintos ángulos con el mismo
número de elementos. La creación de este tipo de programa asiste en la
observación del comportamiento del ancho de haz de una antena lo cual puede
darnos una aproximación precisa que pueda ser de utilidad en el desempeño de
diferentes proyectos.

Marco Teórico

Una antena es un dispositivo (conductor metálico) usado para las transmisiones


en frecuencias AM o FM, diseñado con el objetivo de emitir y/o recibir ondas
electromagnéticas hacia el espacio libre. Una antena transmisora transforma
energía eléctrica en ondas electromagnéticas, y una receptora realiza la función
inversa.
Existe una gran diversidad de tipos de antenas. En unos casos deben expandir en
lo posible la potencia radiada, es decir, no deben ser directivas (ejemplo: una
emisora de radio comercial o una estación base de teléfonos móviles), otras veces
deben serlo para canalizar la potencia en una dirección y no interferir a otros
servicios (antenas entre estaciones de radioenlaces).
Las características de las antenas es que dependen de la relación entre sus
dimensiones y la longitud de onda de la señal de radiofrecuencia transmitida o
recibida. Si las dimensiones de la antena son mucho más pequeñas que la
longitud de onda las antenas se denominan elementales, si tienen dimensiones del
orden de media longitud de onda se llaman resonantes, y si su tamaño es mucho
mayor que la longitud de onda es directiva.
Diagrama de radiación.
Es la representación gráfica de las características de radiación de una antena, en
función de la dirección (coordenadas en azimut y elevación), lo más habitual es
representar la densidad de potencia radiada, aunque también se pueden encontrar
diagramas de polarización o de fase.

Atendiendo al diagrama de radiación, podemos hacer una clasificación general de


los tipos de antena y podemos definir la directividad de la antena (antena
isotrópica, antena directiva, antena bidireccional, antena omnidireccional,…).
Dentro de los diagramas de radiación podemos definir diagrama copolar aquel que
representa la radiación de la antena con la polaridad deseada y contrapolar al
diagrama de radiación con polaridad contraria a la que ya tiene.
Los parámetros más importantes del diagrama de radiación son:
 Dirección de apuntamiento: Es la de máxima radiación. Directividad y
Ganancia.
 Lóbulo principal: Es el margen angular en torno a la dirección de máxima
radiación.
 Lóbulos secundarios: Son el resto de los máximos relativos, de valor inferior
al principal.
 Ancho de haz: Es el margen angular de direcciones en las que el diagrama
de radiación de un haz toma un valor de 3dB por debajo del máximo. Es
decir, la dirección en la que la potencia radiada se reduce a la mitad.
 Relación de lóbulo principal a secundario (SLL): Es el cociente en dB entre
el valor máximo del lóbulo principal y el valor máximo del lóbulo secundario.
 Relación delante-atrás (FBR): Es el cociente en dB entre el valor de
máxima radiación y el de la misma dirección y sentido opuesto.

Desarrollo
Para este proyecto se necesito hacer uso de GUI ya que es necesario realizar una
interfaz ya que en ella se podrán capturar los datos para realizar la simulación del
ancho de haz de alguna antena.
Los elementos que se necesitaron para este proyecto fueron:
-Recuadros de captura de texto: Estos se usan para poder tomar los valores de
forma externa a la codificación del programa y poder realizar los cálculos.
-Push Buttons: La función de estos elementos es, poder dar la orden de ejecutar
alguna serie de comandos una vez introduzcamos los datos necesarios.
-Panel Axes: Este sirve para poder visualizar las graficas que arroja el programa
una vez empezamos a hacer los cálculos con los datos obtenidos.
-UI Panel: Estos sirven para acumular algunos de los otros elementos y poder
organizarlos.

Cada uno de estos elementos pueden visualizarse en la imagen, además cada


uno tiene una sección en la parte de la programación con la que pueden realizar
los comandos que necesitemos.
Código.
function varargout = Menu(varargin)
% MENU MATLAB code for Menu.fig
% MENU, by itself, creates a new MENU or raises the existing
% singleton*.
%
% H = MENU returns the handle to a new MENU or the handle to
% the existing singleton*.
%
% MENU('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MENU.M with the given input arguments.
%
% MENU('Property','Value',...) creates a new MENU or raises the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before Menu_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to Menu_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only
one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Menu

% Last Modified by GUIDE v2.5 17-Jul-2018 02:34:11

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Menu_OpeningFcn, ...
'gui_OutputFcn', @Menu_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before Menu is made visible.


function Menu_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Menu (see VARARGIN)
% Choose default command line output for Menu
handles.output = hObject;

% Update handles structure


guidata(hObject, handles);

% UIWAIT makes Menu wait for user response (see UIRESUME)


% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Menu_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes when figure1 is resized.


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

function Elementos_Callback(hObject, eventdata, handles)


XJ=str2double(get(hObject,'String'));
if isnan(XJ)
errordlg('No puede contener letras','Error')
end
if (XJ<1)|(XJ>30)
errordlg('Sola valores de 0 a 30 ')
clc,clear all
end
handles.XJ=XJ;
guidata(hObject,handles);
function Elementos_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in empezar1.


function Start1_Callback(hObject, eventdata, handles)
angu=eval(get(handles.User1,'string'));
ele=eval(get(handles.Elementos,'string'));
if angu>0
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end
end
y=polar(psi,AF,'r');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n
if rem(ele,2)==0
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end

end
y=polar(psi,AF,'r');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
clc
clear all
else
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end

end
end
y=polar(psi,AF,'r');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end
end
y=polar(psi,AF,'r');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
end
clc,clear all

% --- Executes on button press in empezar2.


function Start2_Callback(~, eventdata, handles)
angu=eval(get(handles.User2,'string'));
ele=eval(get(handles.Elementos,'string'));
if angu>0
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end
end
y=polar(psi,AF,'m');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end

end
y=polar(psi,AF,'m');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
clc
clear all
else
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end

end
end
y=polar(psi,AF,'m');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end
end
y=polar(psi,AF,'m');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
end
clc,clear all

% --- Executes on button press in empezar3.


function Start3_Callback(hObject, eventdata, handles)
angu=eval(get(handles.User3,'string'));
ele=eval(get(handles.Elementos,'string'));
if angu>0
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end
end
y=polar(psi,AF,'g');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end

end
y=polar(psi,AF,'g');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
clc
clear all
else
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end

end
end
y=polar(psi,AF,'g');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end
end
y=polar(psi,AF,'g');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
end
clc,clear all

% --- Executes on button press in empezar4.


function Start4_Callback(hObject, eventdata, handles)
angu=eval(get(handles.User4,'string'));
ele=eval(get(handles.Elementos,'string'));
if angu>0
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end
end
y=polar(psi,AF,'k');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end

end
y=polar(psi,AF,'k');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
clc
clear all
else
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end

end
end
y=polar(psi,AF,'k');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end
end
y=polar(psi,AF,'k');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
end
clc,clear all

% --- Executes on button press in empezar5.


function Start5_Callback(hObject, eventdata, handles)
angu=eval(get(handles.User5,'string'));
ele=eval(get(handles.Elementos,'string'));
if angu>0
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end
end
y=polar(psi,AF,'c');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo<180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,-pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end

end
y=polar(psi,AF,'c');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
clc
clear all
else
if ele==1
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end

end
end
y=polar(psi,AF,'c');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(M-1)*del/2:del:(M-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
else
n=100;
DOAl=angu;
DOA2=linspace(0,DOAl,n);
M=ele;
a=linspace(0.7,0.7,n);
psi=linspace(0,-pi,n);
for k=1:length(DOA2),
angulo=DOA2(k);
psi0=angulo*pi/180;
ang=cos(psi)-cos(psi0);
for q=1:n;
if rem(ele,2)==0
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
else
M=ele+1;
if angu>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
if angulo>-180
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
else
psi=linspace(0,pi,n);
AF(q)=(1/M)*sin((M*pi/2)*ang(q))./sin((pi/2)*ang(q));
end
end
end

end
end
y=polar(psi,AF,'c');
hold on;
polar(psi0,a(n),'*y');
del=.1;
u=-(ele-1)*del/2:del:(ele-1)*del/2;
v=zeros(length(u));
plot(v,u,'k.');
end
end
clc,clear all

function User1_Callback(hObject, eventdata, handles)


% hObject handle to user1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
XJ=str2double(get(hObject,'String'));
if isnan(XJ)
errordlg('El angulo debe de ser un número','Error')
end
if (abs(XJ)<0)|(abs(XJ)>360)
errordlg('Angulo fuera de rango')
clc,clear all
end
handles.XJ=XJ;
guidata(hObject,handles);
% Hints: get(hObject,'String') returns contents of user1 as text
% str2double(get(hObject,'String')) returns contents of user1 as a
double

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


function User1_CreateFcn(hObject, eventdata, handles)
% hObject handle to user1 (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

function User2_Callback(hObject, eventdata, handles)


% hObject handle to user2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
XJ=str2double(get(hObject,'String'));
if isnan(XJ)
errordlg('El angulo debe de ser un número','Error')
end
if (abs(XJ)<0)|(abs(XJ)>360)
errordlg('Angulo fuera de rango')
clc,clear all
end
handles.XJ=XJ;
guidata(hObject,handles);
% Hints: get(hObject,'String') returns contents of user2 as text
% str2double(get(hObject,'String')) returns contents of user2 as a
double

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


function User2_CreateFcn(hObject, eventdata, handles)
% hObject handle to user2 (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

function User3_Callback(hObject, eventdata, handles)


% hObject handle to user3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
XJ=str2double(get(hObject,'String'));
if isnan(XJ)
errordlg('El angulo debe de ser un número','Error')
end
if (abs(XJ)<0)|(abs(XJ)>360)
errordlg('Angulo fuera de rango')
clc,clear all
end
handles.XJ=XJ;
guidata(hObject,handles);
% Hints: get(hObject,'String') returns contents of user3 as text
% str2double(get(hObject,'String')) returns contents of user3 as a
double

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


function User3_CreateFcn(hObject, eventdata, handles)
% hObject handle to user3 (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

function User4_Callback(hObject, eventdata, handles)


% hObject handle to user4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
XJ=str2double(get(hObject,'String'));
if isnan(XJ)
errordlg('El angulo debe de ser un número','Error')
end
if (abs(XJ)<0)|(abs(XJ)>360)
errordlg('Angulo fuera de rango')
clc,clear all
end
handles.XJ=XJ;
guidata(hObject,handles);
% Hints: get(hObject,'String') returns contents of user3 as text
% str2double(get(hObject,'String')) returns contents of user3 as a
double

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


function User4_CreateFcn(hObject, eventdata, handles)
% hObject handle to user4 (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

function User5_Callback(hObject, eventdata, handles)


% hObject handle to user5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
XJ=str2double(get(hObject,'String'));
if isnan(XJ)
errordlg('El angulo debe de ser un número','Error')
end
if (abs(XJ)<0)|(abs(XJ)>360)
errordlg('Angulo fuera de rango')
clc,clear all
end
handles.XJ=XJ;
guidata(hObject,handles);
% Hints: get(hObject,'String') returns contents of user5 as text
% str2double(get(hObject,'String')) returns contents of user5 as a
double

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


function User5_CreateFcn(hObject, eventdata, handles)
% hObject handle to user5 (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 RESET.


function Reset_Callback(hObject, eventdata, handles)
% hObject handle to RESET (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
hold off
polar(0,0);

% --- Executes on button press in salir.


function Salir_Callback(hObject, eventdata, handles)
ans=questdlg('¿Desea salir?','SALIR','Si','No','No');
if strcmp(ans,'No')
return;
end
clear,clc,close all
% 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)
Como resultado del código anterior tenemos esta ventana con algunas
simulaciones a diferentes angulos.
Conclusiones
Este tipo de herramientas son de bastante utilidad no solo en la parte academica
en la que se puede experimentar muchas configuraciones, si no también en un
área laboral en la que algún proyecto pueda ser considerado por la simulación que
estos programas ofrecen, además pueden expandirse ofreciendo otro tipo de
funciones acordes al tema para facilitar u obtener datos de manera mas eficiente.

También podría gustarte