0% encontró este documento útil (0 votos)
21 vistas50 páginas

Diseño de Antena Yagi-Uda en MATLAB

Este documento describe el diseño de una antena Yagi-Uda para frecuencia modulada de 5 elementos. Explica los objetivos, marco teórico, partes de la antena y parámetros de diseño. También incluye códigos de simulación en MATLAB y resultados.
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)
21 vistas50 páginas

Diseño de Antena Yagi-Uda en MATLAB

Este documento describe el diseño de una antena Yagi-Uda para frecuencia modulada de 5 elementos. Explica los objetivos, marco teórico, partes de la antena y parámetros de diseño. También incluye códigos de simulación en MATLAB y resultados.
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

Universidad Nacional de Ingeniería.

Facultad de Electrotecnia y Computación.

Antenas y Radio propagación.

Proyecto: Realización de Antena YagiUda.

Docente:

Integrantes:

Grupo: 3T2-Eo

Managua, Nicaragua 00 de abril 2024

[Fecha] 1
Índice
Objetivos --------------------------------------------------------------------------------------------- 3
 Objetivo general ---------------------------------------------------------------------------- 3
 Objetivos específicos ----------------------------------------------------------------------3
Introducción ----------------------------------------------------------------------------------------- 4
Marco teórico ---------------------------------------------------------------------------- 5
 Elementos de una antena Yagi ---------------------------------------------- 7
 Funcionamiento ------------------------------------------------------------------ 7
 Parámetros de diseño ---------------------------------------------------------- 8
Diseño de antena Yagi ---------------------------------------------------------------- 10
 Parámetros de una antena Yagi de 5 elementos ----------------------- 10
Códigos de simulación
 Primer código --------------------------------------------------------------------- 16
 Segundo código ------------------------------------------------------------------ 17
Resultados de simulación en MATLAB ----------------------------------------- 45
Conclusión -------------------------------------------------------------------------------- 49

Bibliografía ------------------------------------------------------------------------------------50

[Fecha] 2
Objetivos
Objetivo General:

 Diseñar una antena poniendo en práctica los conocimientos adquiridos a través de


los textos asignados y las clases recibidas.

Objetivo especifico

 Crear una antena Yagi-uda para frecuencia modulada (FM), tomando como base
una frecuencia de 195 MHz cumpliendo todos los parámetros para su correcta
elaboración y ejecución

 Realizar un análisis de los requerimientos técnicos de la antena Yagi en función de


las bandas de frecuencia a utilizar y la distancia de comunicación deseada.

 Diseñar la antena Yagi utilizando software de simulación para obtener las


dimensiones óptimas de los elementos radiantes y reflectores, así como la ubicación
adecuada del alimentador.

 Simular el diseño de antenas mediante el software MATLAB para asi corroborar la


ganancia, directividad, patrón de radiación, pérdidas por radiación y relación de
onda estacionaria (VSWR) de la antena.

[Fecha] 3
Introducción.
En el presente documento se encontrará información de cómo hacer un diseño de antena
contando con los parámetros básicos, partes de una antena , funcionamiento, elementos de
una antena etc y cálculos varios para poder así realizar su simulación en MATLAB

La antena es una estructura que sirve de transición entre el espacio libre y un dispositivo de
guía. Este dispositivo de guía o línea de transmisión puede tener la forma de una línea
coaxial o un tubo hueco (guía de ondas) y se utiliza para llevar energía electromagnética
desde la fuente del transmisor a la antena o del receptor a la antena. Una antena transmisora
convierte la energía eléctrica en ondas electromagnéticas, mientras que una antena
receptora realiza la función contraria.

[Fecha] 4
Marco teórico

La antena Yagi, ampliamente conocida y utilizada, fue patentada en 1926 por el Dr.
Hidetsugu Yagi de la Universidad de Tokio, y desde entonces se ha consolidado como una
de las antenas más populares en todo el mundo.

Figura 1: Antena YAGI simple


La invención revolucionaria en esta antena fue la eliminación de la necesidad de tierra, lo
que resultó en la construcción de una antena altamente efectiva utilizando una estructura
simple de dipolo y elementos parásitos como reflectores y directores. Básicamente, una
antena es un conductor metálico que puede irradiar y recibir ondas electromagnéticas,
mientras que una guía de onda es un tubo conductor por el que se propaga la energía
electromagnética de alta frecuencia entre una antena y un transmisor, receptor o ambos.
Mientras que una antena se utiliza como interfaz entre un transmisor y el espacio libre o
entre el espacio libre y el receptor, una guía de onda y una línea de transmisión se utilizan
únicamente para interconectar una antena y un transceptor de manera eficiente.
Una antena tiene la función de acoplar la energía de la salida de un transmisor a la
atmósfera terrestre, o de la atmósfera terrestre a un receptor. A pesar de que una antena no
puede amplificar una señal en el verdadero sentido de la palabra (aunque puede tener
ganancia), se trata de un dispositivo recíproco y pasivo. En otras palabras, las
características de transmisión y recepción son idénticas, salvo en las corrientes de
alimentación al elemento de transmisión. De acuerdo con el principio de reciprocidad, se
puede demostrar que las propiedades de una antena (impedancia, ganancia, etc.) son las
mismas tanto en emisión como en recepción.
Para definir una antena Yagi-Uda, es necesario tener una comprensión adecuada de la
definición de una antena. Según la definición estándar de IEEE, una antena es un medio
para emitir o recibir ondas de radio. La antena Yagi-Uda es un conjunto de dipolos

[Fecha] 5
rectilíneos que consta de un elemento de alimentación y otros elementos parásitos. Este
conjunto se describe como un conjunto de fuego final, lo que significa que funciona como
una sola antena formada por antenas conectadas internamente.

La antena Yagi-Uda es una antena que opera en HF (3-30 MHz), VHF (30-300 MHz) y
UHF (300-3,000 MHz) y consta de varios elementos dipolares lineales, uno de los cuales es
alimentado directamente por una línea de transmisión. Los demás actúan como radiadores
parásitos, cuyas corrientes son inducidas por acoplamiento mutuo. Un dipolo plegado es el
elemento de alimentación común para una antena Yagi-Uda.

El radiador de la antena Yagi-Uda está diseñado específicamente para funcionar como una
matriz de fuego final. Se logra esto haciendo que los elementos parásitos en el haz
delantero actúen como directores, mientras que los de atrás actúan como reflectores. La fila
de directores se designa como un “canal de olas”. La antena Yagi-Uda es una antena muy
efectiva para el dominio de alta frecuencia, ya que opera en el campo de alta frecuencia a
un dominio de frecuencia ultra alta. Los profesores S. Uda y H. Yagi de la Universidad
Imperial de Tohoku, Japón, describieron por primera vez el funcionamiento de este tipo de
antena.

La antena Yagi-Uda se conoce comúnmente como “Antena Yagi” y es un conjunto de


antenas pequeñas con un elemento para la alimentación de energía y otros que son
parásitos. El elemento de alimentación más utilizado es un dipolo plegado. Los elementos
parásitos en el haz delantero actúan como directores y las piezas en el haz trasero actúan
como reflectores para completar la antena. Las varillas delgadas se alinean en una barra
transversal con sus centros. La distancia entre las dos varillas depende de la longitud de
onda de la señal, que normalmente cambia de un décimo a un cuarto de la longitud de onda.

El tamaño de los directores es generalmente más corto que el del elemento accionado y más
conciso que el del reflector. La ganancia de una antena Yagi-Uda depende del número de
elementos parásitos presentes. A medida que aumenta el número de elementos parásitos, la
ganancia total de la antena también aumenta, por lo que hay numerosos directores en una
antena Yagi-Uda. Solo hay un reflector en la antena, ya que su efecto en la ganancia de la
antena es insignificante.

La corriente que circula en el elemento alimentado de una antena Yagi-Uda irradia un


campo electromagnético que induce corrientes en los elementos parásitos de la antena.
Estas corrientes inducidas en los elementos parásitos también irradian campos
electromagnéticos que a su vez inducen corrientes en los demás elementos. La corriente que
circula en cada uno de los elementos es el resultado de la interacción entre todos los
elementos. La fase y la amplitud de la corriente que circula en los elementos parásitos
dependen de la distancia entre ellos, así como de la longitud y diámetro de los elementos.

[Fecha] 6
La amplitud de estas corrientes será de la misma magnitud que la corriente del elemento de
alimentación, aunque su fase puede variar.

Elementos de una antena Yagi:


 Director: Es el elemento frontal de la antena Yagi, tiene la función de orientarla
hacia la señal deseada, lo cual afecta la ganancia y el patrón de radiación de la
antena. El patrón de radiación puede tener una mayor o menor cobertura,
dependiendo del número de directores que se utilicen. Para obtener una ganancia de
11 dB, generalmente se usan seis directores, los cuales deben tener una longitud un
5% menor que la del dipolo. Además, la longitud de los directores siguientes debe
ser un 5% menor que la del director anterior.

 Reflector: Es el elemento pasivo de la antena Yagi, tiene como función eliminar


cualquier señal no deseada que pueda interferir con la señal que se desea captar.
Este elemento aísla al dipolo de las señales no deseadas, lo que contribuye a mejorar
la calidad de la señal que se recibe. La longitud de este elemento debe ser un 5%
mayor que la longitud del dipolo, y se trata de un elemento pasivo, es decir, que no
requiere de alimentación eléctrica para funcionar.

 Dipolo: El dipolo es el elemento activo de la antena Yagi, se excita mediante una


corriente que induce un campo electromagnético en sus elementos. Este elemento es
el encargado de recibir la señal en la dirección indicada y su longitud varía en
función de la frecuencia que se desea captar. Es importante ajustar la longitud del
dipolo para la frecuencia de interés a fin de optimizar la recepción de la señal y
obtener la mejor calidad de la misma.

Figura 2. Elementos de una antena

[Fecha] 7
Parámetros de diseño:
 Frecuencia de operación:
La frecuencia de operación es uno de los parámetros más importantes en el diseño
de una antena Yagi. La antena debe ser diseñada para operar en la frecuencia
específica de la aplicación. La frecuencia de operación determina la longitud y
separación de los elementos de la antena. La fórmula utilizada para determinar la
longitud de los elementos es:

L=λ/2

Donde L es la longitud del elemento y λ es la longitud de onda de la señal.

 Longitud de onda:
La longitud de onda es un parámetro fundamental en el diseño de cualquier antena,
y la antena Yagi no es una excepción. La longitud de onda se refiere a la distancia
que recorre una onda electromagnética en un ciclo completo. Es importante que la
longitud de la antena Yagi sea aproximadamente igual a la mitad de la longitud de
onda de la frecuencia a la que se va a operar. Esto asegura una buena eficiencia y
ganancia.

 Distancia entre elementos:


La distancia entre elementos es otro parámetro clave en el diseño de una antena
Yagi. La distancia entre el elemento radiante y los elementos directores determina la
ganancia y directividad de la antena. Una distancia menor entre elementos aumenta
la directividad de la antena, lo que resulta en una mayor ganancia. Sin embargo, una
distancia demasiado pequeña puede hacer que los elementos interactúen
negativamente y reducir la ganancia.

 Número de elementos directores:


El número de elementos directores es otro factor importante en el diseño de una
antena Yagi. El número de elementos directores afecta directamente la directividad
y ganancia de la antena. Un mayor número de elementos directores resulta en una
mayor directividad y ganancia, pero también aumenta la complejidad y el costo de
la antena.

 Ganancia:
La ganancia es una medida de la eficiencia de la antena para captar o radiar energía
en una dirección particular. La ganancia se define como la relación entre la
intensidad de la señal recibida o transmitida por la antena y la intensidad de la señal

[Fecha] 8
recibida o transmitida por una antena isotrópica. La ganancia se expresa en
decibeles (dB) y se calcula como:

G = 10 log (Potencia de salida / Potencia de entrada).

La ganancia es importante para aplicaciones donde se requiere un mayor alcance de


la señal.

 Directividad:
La directividad es una medida de la capacidad de la antena para enfocar la señal en
una dirección particular. La directividad se relaciona directamente con la ganancia y
puede ser determinada a partir del patrón de radiación de la antena. La directividad
se expresa en decibeles (dB) y se calcula como:

D = G - 2,15

Donde D es la directividad y G es la ganancia.

 Impedancia de entrada:
La impedancia de entrada es la resistencia que presenta la antena a la entrada de la
señal. La impedancia de entrada debe coincidir con la impedancia de la línea de
transmisión para evitar pérdidas de señal. La impedancia de entrada se expresa en
ohmios (Ω) y debe ser cuidadosamente seleccionada para maximizar la eficiencia de
la antena.

 Ancho de banda:
El ancho de banda es el rango de frecuencias en el que la antena puede operar
eficientemente. El ancho de banda es importante para asegurar que la antena pueda
operar en diferentes frecuencias de acuerdo a las necesidades de la aplicación. El
ancho de banda se expresa en Hertz (Hz) y debe ser lo suficientemente amplio para
abarcar el rango de frecuencias de la señal.

 Relación de onda estacionaria (ROS):


La relación de onda estacionaria es una medida de la cantidad de energía reflejada
de la antena en relación a la cantidad de energía transmitida. Una ROS alta indica
una pérdida de energía y una antena menos eficiente.

 Longitud del elemento radiante:


La longitud del elemento radiante también es un parámetro importante en el diseño
de la antena Yagi. La longitud del elemento radiante debe ser igual a la mitad de la
longitud de onda de la frecuencia a la que se va a operar. La longitud del elemento
radiante también afecta la impedancia de entrada de la antena. Una longitud

[Fecha] 9
incorrecta puede resultar en una mala adaptación de impedancia y una pérdida de
ganancia.

 Patrón de radiación:
Los patrones o diagramas de radiación describen la intensidad relativa del campo
radiado en varias direcciones desde la antena a una distancia constante. El patrón de
radiación es también de recepción, porque describe las propiedades de recepción de
la antena. El patrón de radiación es tridimensional, pero generalmente las
mediciones de los mismos son una porción bidimensional del patrón, en el plano
horizontal o vertical. Estas mediciones son presentadas en coordenadas
rectangulares o en coordenadas polares.

Datos base
Los siguientes datos serán utilizados para el diseño de nuestra antena y esta tenga el más
optimo funcionamiento.

1. Frecuencia a trabajar: 195 MHz (Radio difusión)


2. Material de la antena: Aluminio
3. Cable coaxial: LCF214-50JA
2-1/4" CELLFLEX® Premium Attenuation Low-Loss Foam-Dielectric Coaxial
Cable
 50 ohm de impedancia
 Capacitancia de 75 pF/m
 0.57 dB de atenuación cada 100 mts a una frecuencia de 100MHz
 Resiste hasta 2.2 GHz de frecuencia
 Foam-Dielectric, Corrugated
 Conductor interno: tubo de cobre

Parámetros de la antena
Nuestro primer valor a encontrar será lambda ya que este será la base para calcular la
longitud de directores, reflectores y dipolo.
8
3 x 10 m/ s
λ= 6
=1.53 m
195 x 10 Hz

Lambda representa nuestra longitud de onda debido a eso se realizaron los cálculos de
nuestra antena tomando en cuenta su valor.

[Fecha] 10
λ
Reflector = =0.765 m
2
λ
Dipolo = (0.95)=0.72 m
2
λ
1er director = (0.90)=0.68 m
2
λ
2do director = (0.885)=0.67 m
2
λ
3er director = (0.867)=0.66 m
2
λ
4to director = (0 . 860)=0 . 65 m
2
λ
5to director = (0 . 817)=0 . 62 m
2
Separación entre reflector y el dipolo:
0.18 ( 1.53 m )=0.27 m

Separación entres dipolo y el 1er director:


0.09 ( 1.53 m )=0.13 m

Separación entre directores:


0.18 ( 1.53 m )=0.27 m

Factor de ganancia:
10 log ( 7 ) =8.45 dB

Cálculos de la antena
 Potencia del transmisor en dBm

PT dBm=10 log (25 w)+30=43.97 dBm

[Fecha] 11
P¿ =Ptx −Lc−Ltx

P¿ =43.97 dBm−0.19 dB−0.83 db=42.95 dBm

Wrad=PxdBm−LLC −LLTx+Gfag
Wrad=43.97 dBm−0 ,19 dB−0.83 dB+ 8.45 dB=51.4 dBm
El siguiente paso a realizar es calcular la eficiencia de nuestra antena, lo cual
determinaremos de convirtiendo la potencia radiada de dBm a Watts:

( P .radW
Prad dBm=10 log
1w )
+30

=log (
1w )
51.4 dBm−30 P . radW
10
2.14
10 =Prad W
138.03 W =P rad W

W rad
η=
W¿
138.03 W
η= =5.52 W ≈ 37.41 dBm
25 W

 Potencia de perdida
P Ioss=P ent + Prad

 En dBm:
P Ioss=42.95 dBm−51.4 dBm
P Ioss=−8.45 dBm

 En Watts:
P Ioss=19.49W −138.03 W
P Ioss=−118.54 W

[Fecha] 12
 Intensidad de radiación isotrópica
Prad
U0=

51.4 dBm
u0 = =4.09 dBm

 Coeficiente de reflexión

 Impedancia de la carga:
1
Z L =Z R +Z C =R +
jω ∁
Z L =50 Ω− j2 πf ∁
Z L =50 Ω−0 , 09 j Ω

 Cálculo del coeficiente

Z L −Z 0
r L=
Z L +Z 0
−7 −4
r L=2.024 x 10 −4.99 x 10 j
−7
r L=4.49 x 10 ∠−89.97

 Cálculo de relación de onda estacionaria (ROE)


1+ I r I
VSWR=
1−I r I
VSWR=1.000000898

 Resistencia de perdida

R Ioss =

l ω μ0
2 P 2σ
0.475 (1.53 m)
R Ioss = √¿ ¿ ¿
2(7 x 10−3 πλ)

[Fecha] 13
R Ioss =0.0434 Ω

 Resistencia de radiación
Rrad =R ent −R Ioss

Rrad =50 Ω−0.0484 Ω

Rrad =49.95 Ω

 Cálculo del I 0

I 0=
√ 2 (138.03 w)
19.95 Ω
I 0=2.35 A

 Cálculo del ancho de banda


f v−f
Bw = e

fc

216 MHz−174 MHz


Bw =
195 MHz
Bw =0.21 x 100 %=21%

 Ancho de Haz
Plano E : 52.06°

Plano H: 61.26°

 Directividad

D= °°
(52.06 )(61.26 )
D=5.95 dBm

 Intensidad de radiación

[Fecha] 14
I=
√ p¿
Z

I=
√ 19.49 w
50
I =0.62 A

( )
2
I
U =120 π 2
senθ

( )
2
(0.62 A)
U =120 π 2
sen 98°

U =1.81 w

 PIRE (dBm)
PIRE=P ¿ +Ga¿
PIRE=42.95 dBm+ 8.45 dBm
PIRE=51.4 dBm
 Cálculo del campo eléctrico
N
Eθ =∑ Eθ =¿ jω A θ ¿
n
n=1

{ [ ]}
N N + I n /2
μ e− jkr
Aθ =∑ A θ =¿− sen θ ∑ e ( X n sen θ cos ϕ+Y n sen θ sen ϕ ) × ∫
'
jk jk z n cosθ '
I ne d Zn ¿
n=1
n
4 πr n=1 − I n/ 2

d=0.35 km

E=74.7+51.4 dBm−20 log ( 0.35 km )

E=135.21 dBm

 Cálculo del campo magnético


H ( dBu )=E (120 π )
¿ 135.21 dBu(120 π)
¿ 50,972.96 dBu

[Fecha] 15
 Área efectiva

( )
2
x
Aefe =( D )

Aefe =( 5.95 dBm ) (


( 1.5 dBm )2
4π )
Aefe =1.10 m

Antena en mathlab
%% Antenna Properties
antennaObject = design(yagiUda,195*1e6);
[Link] = 0.72;
[Link] 'Aluminium';
[Link] = 3.77*1e7;
[Link] = 0.000762;
[Link] = 50;
[Link] = 5;
[Link] = 0.68; [Link]
= 0.27;
[Link] = 0.765;
[Link] = 0.27;
[Link] = 'Aluminium';
[Link]. Conductivity = 3.77 1e7;
[Link] = 0.000762;
[Link] = 50;
% Show
figure;
show(antennaobject)

%% Antenna Analysis
% Define plot frequency
plotFrequency = 195*e6;
% Define frequency range
freqRange = (175.5:1.95:214.5) * 1e6;
% Reference Impedance
refImpedance = 50;
% impedance
figure;
impedance(antennaObject, freqRange)
% sparameter
figure;

[Fecha] 16
s = sparameters(antennaObject, freqRange);
rfplot(s)
% pattern
figure;
pattern(antennaObject, plotFrequency)
% azimuth
figure;
patternAzimuth(antennaObject, plotFrequency,0,'Azimuth',[0:5:360])
% elevation
figure;
patternElevation(antennaObject, plotFrequency,0,'Elevation',
[0:5:360])
% current
figure;
current(antennaObject, plotFrequency)

Segundo Código de Antena en MatLab.

function [] = YAGI_UDA
%***********************************************************************
% YAGI_UDA.M
%******************************************************************
% THIS IS A MATLAB M-FILE THAT COMPUTES, FOR THE YAGI-UDA ARRAY,
% THE
%
% I. FAR-ZONE E- AND H-PLANE AMPLITUDE PATTERNS (IN dB)
% II. DIRECTIVITY OF THE ARRAY (IN dB)
% III. E-PLANE HALF-POWER BEAMWIDTH (IN DEGREES)
% IV. H-PLANE HALF-POWER BEAMWIDTH (IN DEGREES)
% V. E-PLANE FRONT-TO-BACK RATIO (IN dB)
% VI. H-PLANE FRONT-TO-BACK RATIO (IN dB)
%
% THE PROGRAM IS BASED ON POCKLINGTON'S INTEGRAL EQUATION
% FORMULATION OF SECTION 10.3.3, EQUATIONS (10-42) - (10-65a).
% M ENTIRE DOMAIN COSINUSOIDAL (FOURIER) BASIS MODES ARE USED
% FOR EACH OF THE ANTENNA ELEMENTS.
%
% ** INPUT PARAMETERS BY USER
% 1. M = NUMBER OF ENTIRE DOMAIN BASIS MODES
% 2. N = NUMBER OF ANTENNA ELEMENTS
% 3. L = LENGTH OF EACH ELEMENT (IN WAVELENGTHS)
% 4. ALPHA = RADIUS OF EACH ELEMENT (IN WAVELENGTHS)
% 5. S = SEPARATION BERWEEN THE ELEMENTS (IN WAVELENGTHS)
%
% ** NOTES
% 1. REFER TO FIGURE 10.19 FOR THE GEOMETRY.
% 2. DRIVER ELEMENT IS LOCATED AT THE ORIGIN.
% 3. FIRST ELEMENT (N=1) IS THE FIRST DIRECTOR.
% 4. REFLECTOR IS THE N-1 ELEMENT; ONLY ONE REFLECTOR.
% 5. DRIVEN ELEMENT IS N.

[Fecha] 17
%
% THE FORMULATION OF THE PROBLEM IS BASED ON THE PAPER `ANALYSIS OF
% YAGI-UDA-TYPE ANTENNAS' BY GARY A. THIELE, IEEE TRANS. ANTENNAS
% PROPAGAT., VOL. 17, JAN. 1969.
% ******************************************************************
% Written by: Mingwei Hsu, Arizona State University
%
% ******************************************************************

close all;
clear all;
clc;

% Declare global variables


global MMAX NMAX Z RHO N2 NMODE L
MMAX = 30;
NMAX = 30;

%
% Choice of output
%
fprintf (1, '\n\n');
fprintf (1, ' OUTPUT DEVICE OPTION\n');
fprintf (1, ' OPTION (1): SCREEN\n');
fprintf (1, ' OPTION (2): OUTPUT FILE\n\n');
device = input (' OUTPUT DEVICE = ', 's');
device = str2num (device);

if (device == 1)
fid = 1;
elseif (device == 2)
filename = input ('\n INPUT THE DESIRED OUTPUT FILENAME = ', 's');
fid = fopen (filename, 'wt');
else
fprintf (1, '\n');
fprintf (1, ' ***ERROR***\n');
fprintf (1, ' OUTPUT DEVICE NUMBER SHOULD BE EITHER 1 OR 2\n\n\n');
return
end

%
% INPUT THE LENGTH OF THE ELEMENTS, L, AND THEIR RELATIVE SEPARATION IN FREE
% SPACE WAVELENGTHS, S. THE VARIABLE YP DEFINES THE ABSOLUTE DISTANCE OF
% THE ELEMENTS ALONG THE Y-AXIS, WITH THE DRIVEN ELEMENT AT THE ORIGIN.
% ALPHA IS THE ELEMENT WIRE RADIUS IN WAVELENTGHS.
%
% ***********************************************************************
% INPUT NUMBER OF MODES PER ELEMENT
% ---------------------------------
M = input ('\n NUMBER OF MODES PER ELEMENT (A POSITIVE INTEGER) = ', 's');

M = str2num (M);
M = round (M);
if (M > MMAX)

[Fecha] 18
fprintf (1, '\n *** ERROR: Need to increase MMAX in the program.\n\n');
return
elseif (M <= 0)
fprintf (1, '\n *** ERROR: The number has to be greater than 0!\n\n');
return
elseif isempty (M) % If the user enters a value other than a number
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end

% INPUT NUMBER OF ELEMENTS


% ------------------------
N = input (' NUMBER OF ELEMENTS (A POSITIVE INTEGER GREATER THAN 1) = ', 's');

N = str2num (N);
N = round (N);
if (N > NMAX)
fprintf (1, '\n *** ERROR: Need to increase NMAX in the program.\n\n');
return
elseif (N <= 0)
fprintf (1, '\n *** ERROR: The number has to be greater than 0!\n\n');
return
elseif isempty (N) % If the user enters a value other than a number
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end

fprintf (1, '\n');

% INPUT ELEMENT LENGTHS AND ELEMENT SEPARATION DISTANCES


% ------------------------------------------------------
% ---> ELEMENT LENGTHS (IN WAVELENGTHS)
if (N > 3)
fprintf (1, ' DO ALL DIRECTORS HAVE THE SAME LENGTH?\n');
ANS = input (' ANSWER: (Y OR N) ...... ', 's');
else
ANS = 'N';
end

fprintf (1, '\n');

% THE LENGTH OF THE DIRECTORS


if (ANS == 'Y') | (ANS == 'y')
LDIR = input (' THE UNIFORM LENGTH (in WAVELENGTHS) OF THE DIRECTOR = ',
's');
LDIR = str2num (LDIR);
if (isempty (LDIR)) | (LDIR <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end
L = LDIR * ones (1, N-2);

[Fecha] 19
elseif (ANS == 'N') | (ANS == 'n')
a = 1;
while a <= (N-2)
fprintf (1, ' LENGTH (in WAVELENGTHS) OF DIRECTOR # %2d =', a);
b = input (' ', 's');
b = str2num (b);
if (isempty (b)) | (b <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
else
L (a) = b;
end
a = a + 1;
end
else

fprintf (1, '\n ***** ERROR *****\n');


fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end

% GET THE LENGTH OF THE REFLECTOR


b = input (' LENGTH (in WAVELENGTHS) OF THE REFLECTOR = ', 's');
b = str2num (b);
if (isempty (b)) | (b <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end
L (N-1) = b;

% GET THE LENGTH OF THE DRIVEN ELEMENT


b = input (' LENGTH (in WAVELENGTHS) OF THE DRIVEN ELEMENT = ', 's');
b = str2num (b);
if (isempty (b)) | (b <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end
L (N) = b;

% INPUT ELEMENT SEPARATION DISTANCES


% ------------------------------------------------------

% ELEMENT SEPARATION BETWEEN THE DRIVEN ELEMENT AND THE 1ST DIRECTOR
b = input ('\n SEPARATION (in WAVELENGTHS) BETWEEN DRIVEN ELEMENT & 1ST
DIRECTOR = ', 's');
b = str2num (b);
if (isempty (b)) | (b <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end

[Fecha] 20
S_1 = b;

if (N > 3)
fprintf (1, '\n IS THE SEPARATION BETWEEN DIRECTORS UNIFORM?\n');
ANS = input (' ANSWER: (Y OR N) ...... ', 's');
fprintf (1, '\n');
else
ANS = 'N';
end

% THE SEPARATION DISTANCES OF THE DIRECTORS


if (ANS == 'Y') | (ANS == 'y')
SDIR = input (' THE UNIFORM SEPARATION (in WAVELENGTHS) BETWEEN DIRECTORS
= ', 's');
SDIR = str2num (SDIR);
if (isempty (SDIR)) | (SDIR <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end
S = SDIR * ones (1, N-2);

elseif (ANS == 'N') | (ANS == 'n')


a = 2;
while a <= (N-2)
fprintf (1, ' SEPARATION (in WAVELENGTHS) BETWEEN DIRECTORS # %2d AND
# %2d =', a-1, a);
b = input (' ', 's');
b = str2num (b);
if (isempty (b)) | (b <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
else
S (a) = b;
end
a = a + 1;
end

else
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end

S (1) = S_1;

% ELEMENT SEPARATION BETWEEN THE DRIVEN ELEMENT AND THE REFLECTOR


b = input (' SEPARATION (in WAVELENGTHS) BETWEEN REFLECTOR & DRIVEN ELEMENT =
', 's');
b = str2num (b);
if (isempty (b)) | (b <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return

[Fecha] 21
end
S (N-1) = b;

% RADIUS OF EACH ELEMENT


b = input ('\n RADIUS (in WAVELENGTHS) FOR ALL ELEMENTS USED = ', 's');
b = str2num (b);
if (isempty (b)) | (b <= 0)
fprintf (1, '\n ***** ERROR *****\n');
fprintf (1, ' INPUT DATA ARE NOT OF THE RIGHT FORMAT.\n\n');
return
end
ALPHA = b;

%
********************************************************************************
****
%
********************************************************************************
****

% Echo all the input parameters


% -----------------------------
fprintf (fid, '\n ******************************************************');
fprintf (fid, '\n PROGRAM INPUT FOR THE YAGI UDA ARRAY');
fprintf (fid, '\n ******************************************************\n');

fprintf (fid, '\n NUMBER OF MODES PER ELEMENT = %2d', M);


fprintf (fid, '\n NUMBER OF ELEMENTS = %2d\n', N);

% Print out the length of each element


a = 1;
while a <= (N-2)
fprintf (fid, '\n LENGTH OF DIRECTOR # %2d = %12.5f WAVELENGTHS', a, L
(a));
a = a + 1;
end
fprintf (fid, '\n LENGTH OF REFLECTOR = %12.5f WAVELENGTHS', L (N-1));
fprintf (fid, '\n LENGTH OF DRIVEN ELEMENT = %12.5f WAVELENGTHS\n', L (N));

% Print out the element separation


fprintf (fid, '\n SEPARATION BETWEEN DRIVEN ELEMENT & 1ST DIRECTOR = %12.5f
WAVELENGTHS', S (1));
a = 2;
while a <= (N-2)
fprintf (fid, '\n SEPARATION BETWEEN DIRECTORS # %2d AND # %2d = %12.5f
WAVELENGTHS', a-1, a, S (a));
a = a + 1;
end
fprintf (fid, '\n SEPARATION BETWEEN REFLECTOR & DRIVEN ELEMENT = %12.5f
WAVELENGTHS\n', S (N-1));

fprintf (fid, '\n RADIUS FOR ALL ELEMENTS USED = %12.5e WAVELENGTHS\n\n\n',
ALPHA);

[Fecha] 22
% Warn the user the program takes time to execute.
fprintf (1, ' WAIT ... This may take a few minutes !!!\n\n\n');

% Open all necessary files for writing


fid1 = fopen ('Epl_yagi.dat', 'wt');
fid2 = fopen ('Hpl_yagi.dat', 'wt');
fid3 = fopen ('Cur_yagi.dat', 'wt');
fid4 = fopen ('Coe_yagi.dat', 'wt');

%
********************************************************************************
****
%
********************************************************************************
****
% The real computation starts here.

% Initialize some variables


a = 1;
while a <= (N - 2)
YP (a) = a * S (a);
a = a + 1;
end
YP (N-1) = - S (N-1);
YP (N) = 0;

RES = 0;
G2 = 0;
INDEX = 0;
DZ = L / (2 * M - 1);
ETA = 120 * pi;
MU = 4 * pi * 10 ^ (-7);
C = 3 * 10 ^ 8;
K = 2 * pi;
RTOD = 180 / pi;
DTOR = pi / 180;

A = zeros (M * N, M * N);
B = 1:(M*N);
B = B * 0;
Inm = zeros (N, M);

I = 1;
h=waitbar(0,'Program is running ...');
while I <= (M * N)
waitbar(0.8*I/(M*N),h);
IFACT = floor ((I - 1) / M);% This determines the position of the
observer with
N1 = IFACT + 1; % N1 being the element at which the observer
is.
IMODE = I - IFACT * M;

[Fecha] 23
Z = (M - IMODE) * DZ (N1); % Based on the mode # and element find the
distnce Z

J = 1;
while J <= (M * N)

JFACT = floor ((J - 1) / M); % This determines the position of the


source and its
N2 = JFACT + 1; % corresponding mode. N2 is the element on
which the
NMODE = J - JFACT * M; % source is and NMODE its mode #.

if (N1 == N2) % If the effect of a mode is found on the


element
RHO = ALPHA; % that it is located, Y is the radius of the
element.
else % Otherwise the distance Y is found using the
formula
RHO = YP (N1) - YP (N2); % (assuming X, X' = 0).
end

LL = 0; % Define the limits of the integration


UL = L (N2) / 2;

RES = SINTEG (UL, LL, 10); % Perform numerical integration


LEN = L (N2) / 2;
G2 = KERNEL (LEN);
F2M = NMODE * 2 - 1;

A (I, J) = ETA / (j * 8 * pi ^ 2) * ...


((F2M * pi / L (N2)) * (-1) ^ (NMODE + 1) * G2 + ...
(K ^ 2 - F2M ^ 2 * pi ^ 2 / L (N2) ^2) * RES);
J = J + 1;

end

I = I + 1;
end

% Fill the last row of the matrix corresponding to the feeder.


I = zeros (1, M * (N - 1));
J = ones (1, M);
A (M * N, :) = [I J];
B (M * N) = 1;

% Invert the system to solve for the current coefficients in the


% Fourier Series expansion.

ISIZE = N * M;
[A, IPERM, PIVOT] = LUDEC (A, ISIZE);
B = LUSOLV (A, ISIZE, IPERM, B);

%
% CONVERT THE SINGLE ARRAY OF THE CURRENT COEFFICIENTS TO A
% DOUBLE ARRAY OF THE FORM Imn.

[Fecha] 24
%
NCUT = 0;

I = 1;
while I <= N

J = 1;
while J <= M
Inm (I, J) = B (J + NCUT);
J = J + 1;
end

NCUT = NCUT + M;
I = I + 1;
end

%
% CALCULATE THE RADIATED FIELDS IN THE E-PLANE
%
% IN THIS PLANE THETA VARIES FROM 0 < THETA < 180, WHEREAS
% PHI = 90 IN HALF OF THE PATTERN AND PHI=270 IN THE OTHER
% HALF. THE PATTERN IS CALCULATED AT ONE DEGREE INCREMENTS.
%
NCUT = 0;

ML = 1;
% h=waitbar(0,'Program is running ...');
while ML <= 2

if (ML == 1)
PHI = 90 * DTOR;
MAX = 181;
else
PHI = 270 * DTOR;
MAX = 180;
end

ICOUNT = 1;
while ICOUNT <= MAX
waitbar(ICOUNT/MAX*ML*0.5*0.2+0.8,h);
THETA = (ICOUNT - 1) * DTOR;

if (THETA > pi)


PHI = 270 * DTOR;
end

EZP = 0;

I = 1;
while I <= N

IZP = 0;

J = 1;
while J <= M

[Fecha] 25
MODE = J;
LEN = L (I);
ANG = THETA;
IZP = IZP + Inm (I, J) * ...
(ZMINUS (ANG, LEN, MODE) + ...
ZPLUS (ANG, LEN, MODE));
J = J + 1;
end

AEXP = K * YP (I) * sin (THETA) * sin(PHI);


EZP = EZP + L (I) * exp (j * AEXP) * IZP;

I = I + 1;
end

ETHETA (NCUT + ICOUNT) = j * C * MU / 8 * sin (THETA) * EZP;

ICOUNT = ICOUNT + 1;
end

NCUT = NCUT + MAX;


ML = ML + 1;
end
close(h);

% FIND THE MAXIMUM VALUE IN THE E-PLANE PATTERN


EMAX = 10 ^ (-12);

abs_ETHETA = abs (ETHETA);


ARG = max (abs_ETHETA);
if ARG > EMAX
EMAX = ARG;
end

% NORMALIZE THE PATTERN TO THE MAXIMUM VALUE, CONVERT IN dB,


% AND WRITE OUT THE RESULTS

fprintf (fid1, '# E-PLANE PATTERN OF THE YAGI UDA ANTENNA\n');


fprintf (fid1, '# =======================================\n#\n');
fprintf (fid1, '# THETA E-THETA (THETA, PHI=90 OR 270)\n#\n');

I = 1;
while I <= 361
THETA = I - 1;
ARG = abs (ETHETA (I));

if ((ARG/EMAX) > (10 ^ (-6)))


ETH (I) = 20 * log10 (ARG / EMAX);
else
ETH (I) = -120;
end

fprintf (fid1, ' %12.4f%12.4f\n', THETA, ETH (I));


I = I + 1;
end

[Fecha] 26
% RECORD THE E-PLANE VALUES FOR FUTURE PLOTTING.
E_PLANE = ETH;

%
% FIND THE FRONT-TO-BACK RATIO IN THE E-PLANE PATTERN
%
EFTOB = - ETH (271);

%
% FIND THE 3-dB BEAMWIDTH IN THE E-PLANE PATTERN
%
I = 91;
while I <= 270
ETH (I) = ETH (I) + 3;
I = I + 1;
end

I = 91;
while I <= 270
THETA = I-1;

if (ETH (I) == 0)
E3D_BW = 2 * ((I - 1) - 90);
I = 300; % Terminate while loop early
elseif ((ETH (I - 1) > 0) & (ETH (I) < 0))
E3D_BW = 2 * (- ETH (I) / (ETH (I) - ETH (I - 1)) + (I - 1) - 90);
I = 300;
end

I = I + 1;
end

%
% CALCULATE THE RADIATED FIELDS IN THE H-PLANE
%
% IN THIS PLANE THETA = 90 AND PHI VARIES FROM 0 < PHI < 360.
%
THETA = 90 * DTOR;
MAX = 361;

ICOUNT = 1;
while ICOUNT <= MAX

PHI = (ICOUNT - 1) * DTOR;


EZP = 0;

I = 1;
while I <= N
IZP = 0;

J = 1;
while J <= M
MODE = J;

[Fecha] 27
LEN = L (I);
ANG = PHI;
IZP = IZP + Inm (I, J) * ...
(ZMINUS (ANG, LEN, MODE) + ...
ZPLUS (ANG, LEN, MODE));
J = J + 1;
end

AEXP = K * YP (I) * sin (THETA) * sin(PHI);


EZP = EZP + L (I) * exp (j * AEXP) * IZP;
I = I + 1;
end

ETHETA (ICOUNT) = j * C * MU / 8 * sin (THETA) * EZP;


ICOUNT = ICOUNT + 1;
end

%
% FIND THE MAXIMUM VALUE IN THE H-PLANE PATTERN
%
EMAX = 10 ^ (-12);
abs_ETHETA = abs (ETHETA);
ARG = max (abs_ETHETA);
if (ARG > EMAX)
EMAX = ARG;
end

%
% NORMALIZE THE PATTERN TO THE MAXIMUM VALUE, CONVERT IN dB, AND
% WRITE OUT THE RESULTS
%
fprintf (fid2, '# H-PLANE PATTERN OF THE YAGI UDA ANTENNA\n');
fprintf (fid2, '# =======================================\n#\n');
fprintf (fid2, '# PHI E-THETA (PHI, THETA=90)\n#\n');

I = 1;
while I <= 361

PHI = I - 1;
ARG = abs (ETHETA (I));

if (ARG / EMAX) > (10 ^ (-6))


ETH (I) = 20 * log10 (ARG / EMAX);
else
ETH (I) = - 120;
end

fprintf (fid2, ' %12.4f%12.4f\n', PHI, ETH (I));


I = I + 1;
end

% RECORD THE H-PLANE VALUES FOR FUTURE PLOTTING


H_PLANE = ETH;

[Fecha] 28
% FIND THE FRONT-TO-BACK RATIO IN THE H-PLANE PATTERN
%
HFTOB = - ETH (271);

%
% FIND THE 3-dB BEAMWIDTH IN THE H-PLANE PATTERN
%
I = 1;
while I <= 181
ETH (I) = ETH (I) + 3;
I = I + 1;
end

I = 91;
while I <= 270
PHI = I - 1;

if (ETH (I) == 0)
H3D_BW = 2 * ((I - 1) - 90);
I = 300;
elseif (ETH (I-1) > 0) & (ETH (I) < 0)
H3D_BW = 2 * (- ETH (I) / (ETH (I) - ETH (I - 1)) + (I - 1) - 90);
I = 300;
end

I = I + 1;
end

%
% CALCULATE THE ANTENNA DIRECTIVITY
%
THETA = 90 * DTOR;
PHI = 90 * DTOR;
AZ = 0;

I = 1;
while I <= N
IZP = 0;

J = 1;
while J <= M
MODE = J;
LEN = L (I);
ANG = THETA;
IZP = IZP + Inm (I, J) * ...
(ZMINUS (ANG, LEN, MODE) + ...
ZPLUS (ANG, LEN, MODE));
J = J + 1;
end

AEXP = K * YP (I) * sin (THETA) * sin (PHI);


AZ = AZ + L (I) * exp (j * AEXP) * IZP;

I = I + 1;
end

[Fecha] 29
UMAX = 3.75 * pi * abs (AZ) ^ 2 * sin (THETA) ^ 2;

PRAD = SCINT2 (0, pi, 0, 2 * pi, N, M, Inm, YP);

D0 = 4 * pi * UMAX / abs (PRAD);

fprintf (fid, '\n ******************************************************\n');


fprintf (fid, ' PROGRAM OUTPUT FOR THE YAGI UDA ARRAY\n');
fprintf (fid, ' ******************************************************\n');
fprintf (fid, '\n 3-dB BEAMWIDTH IN THE E-PLANE PATTERN = %12.2f DEGREES\n',
E3D_BW);
fprintf (fid, '\n 3-dB BEAMWIDTH IN THE H-PLANE PATTERN = %12.2f DEGREES\n',
H3D_BW);
fprintf (fid, '\n FRONT-TO-BACK RATIO IN THE E-PLANE = %12.4f dB\n', EFTOB);
fprintf (fid, '\n FRONT-TO-BACK RATIO IN THE H-PLANE = %12.4f dB\n', HFTOB);
fprintf (fid, '\n DIRECTIVITY = %16.3f dB\n', 10 * log10 (D0));

% BASED ON THE FOURIER COEFFICIENTS OF THE CURRENT, CALCULATE THE


% CURRENT DISTRIBUTION ON THE ELEMENTS. NOTE THAT EACH ELEMENT
% IS SUBDIVIDED INTO 100 SECTIONS FOR THIS CALCULATION.
%
%
fprintf (fid3, ' CURRENT DISTRIBUTION ON THE ELEMENTS\n');
fprintf (fid3, ' ====================================\n\n');

IL = 1;
while IL <= N

fprintf (fid3, '\n\n ELEMENT # %3d\n', IL);


fprintf (fid3, ' =========\n\n');

DZ (IL) = L (IL) / 100;

I = 1;
while I <= 51

Z = (I - 1) * DZ (IL);
IZP = 0;

J = 1;
while J <= M

F2M = 2 * J - 1;
IZP = IZP + Inm (IL, J) * cos (F2M * pi * Z / L (IL));

J = J + 1;
end

CUR (I) = abs (IZP);


angle = atan2 (imag (IZP), real (IZP));
PHA (I) = angle * RTOD;

I = I + 1;
end

[Fecha] 30
fprintf (fid3, ' DISTANCE CURRENT CURRENT\n');
fprintf (fid3, ' MAGNITUDE PHASE \n\n');

I = 1;
while I <= 51
Z = (I - 1) * DZ (IL);
fprintf (fid3, ' %12.5f %12.5f %12.5f\n', Z, CUR (I), PHA (I));
I = I + 1;
end

CENTER_CURRENT (IL) = CUR (1); % Record for future plotting


IL = IL + 1;
end

I = 1;
while I <= N

fprintf (fid4, '\n\n ELEMENT # %3d\n', I);


fprintf (fid4, ' =========\n\n');
fprintf (fid4, ' MODE # MAGNITUDE PHASE\n\n');

J = 1;
while J <= M

CURRENT = abs (Inm (I, J));


angle_radian = atan2 (imag (Inm (I, J)), real (Inm (I, J)));
ANGLE = angle_radian * RTOD;

fprintf (fid4, ' %2d %12.5f %12.5f\n', J, CURRENT, ANGLE);

J = J + 1;
end

I = I + 1;
end

I = 1;
while I > 0

fprintf (fid, '\n\n *** NOTE:\n');


fprintf (fid, ' E-PLANE PATTERN IS STORED IN [Link]\n');
fprintf (fid, ' H-PLANE PATTERN IS STORED IN [Link]\n');
fprintf (fid, ' CURRENT ON EACH ELEMENT IS STORED IN [Link]\n');
fprintf (fid, ' MODE COEFFs. FOR EACH ELEMENT ARE STORED IN Coe-
[Link]\n\n');

if fid == 1
I = 0; % exit the loop
else
fid = 1; % print same message on the screen again
end

end

[Fecha] 31
fclose ('all');

E_PLANE = E_PLANE (1:360);


H_PLANE = H_PLANE (1:360);
angle = 1:1:360;

figure;
plot (angle, E_PLANE, '-b', 'LineWidth', 2);
hold on;
plot (angle, H_PLANE, '--r', 'LineWidth', 2);
legend ('E-Plane', 'H-Plane');
xlim ([1 360]);
ylim ([-60 0]);
title ('Yagi-Uda Analysis');
xlabel ('Theta(E)/Phi(H) degrees');
ylabel ('Field Pattern (dB)');
hold off;

figure;
INDEX = 1:1:N;
if N >= 3
CENTER_CURRENT = [CENTER_CURRENT(N-1:N) CENTER_CURRENT(1:N-2)];
INDEX = [INDEX(N-1:N) INDEX(1:N-2)];
end
plot (CENTER_CURRENT, 'LineWidth', 2);
set (gca, 'XTick', 1:1:N);
set (gca, 'XTickLabel',INDEX);
title ('Current Distribution');
ylim ([0 1]);
xlabel ('Element Number');
ylabel ('Element Current Amplitude');

figure;
h1=elevation(angle*pi/180,E_PLANE,-40,0,5,'b'); hold on;
h2=elevation(angle*pi/180,H_PLANE,-40,0,5,'r--');
set([h1 h2],'linewidth',2);
legend([h1 h2],{'E-Plane','H-Plane'});

% End of the yagi_uda function


%*****************************************************************
end

%*****************************************************************
% FUNCTION SINTEG (SINGLE PRECISION)
%
% PURPOSE
% TO PERFORM COMPLEX SINGLE INTEGRATION
% DOES SIXTEEN POINT GAUSSIAN QUADRATURE INTEGRATION
% WITH INCREASING ACCURACY SET BY INTEGER NO
%
% USAGE
% ANS = SINTEG(UL,LL,NO)
%
% DESCRIPTION OF PARAMETERS
% UL - UPPER LIMIT OF THE INTEGRATION (REAL)

[Fecha] 32
% LL - LOWER LIMIT OF THE INTEGRATION (REAL)
% NO - NUMBER OF DIVISIONS BETWEEN LL AND UL (INTEGER)
%
% ANS - INTEGRATION RESULT
% L - THE LENGTHS OF THE ARRAY ELEMENTS (GLOBAL VARIABLE)

function ANS = SINTEG (UL, LL, NO)

GAUSS = [-0.0950125098376370
-0.2816035507792590
-0.4580167776572270
-0.6178762444026440
-0.7554044083550030
-0.8656312023878320
-0.9445750230732330
-0.9894009349916500
0.0950125098376370
0.2816035507792590
0.4580167776572270
0.6178762444026440
0.7554044083550030
0.8656312023878320
0.9445750230732330
0.9894009349916500];

LEGEND = [0.1894506104550680
0.1826034150449240
0.1691565193950020
0.1495959888165770
0.1246289712555340
0.0951585116824930
0.0622535239386480
0.0271524594117540
0.1894506104550680
0.1826034150449240
0.1691565193950020
0.1495959888165770
0.1246289712555340
0.0951585116824930
0.0622535239386480
0.0271524594117540];

DEL = (UL - LL) / (2 * NO);


SUM = 0;

J = 1;
while J <= NO
S = LL + (2 * J - 1) * DEL;
I = 1;
while I <= 16
X = S + GAUSS (I) * DEL;
SUM = SUM + LEGEND (I) * FF (X);
I = I + 1;
end
J = J + 1;

[Fecha] 33
end

ANS = SUM * DEL;

% End of the SINTEG function


%*****************************************************************
end

%*****************************************************************
% FUNCTION FF
%
function value = FF (X)
global Z RHO N2 NMODE L

K = 2 * pi;

RMINUS = sqrt (RHO ^ 2 + (Z - X) ^ 2);


RPLUS = sqrt ( RHO ^ 2 + (Z + X) ^ 2);

F2M = NMODE * 2 - 1;

value = (exp (-j * K * RMINUS) / (4 * pi * RMINUS) + ...


exp (-j * K * RPLUS) / (4 * pi * RPLUS)) * ...
cos (F2M * pi * X / L (N2));

% End of the FF function


%*****************************************************************
end

%****************************************************************
% FUNCTION KERNEL
%
function G2 = KERNEL (ZP)
global Z RHO

K = 2 * pi;

RMINUS = sqrt (RHO ^ 2 + (Z - ZP) ^ 2);


RPLUS = sqrt (RHO ^ 2 + (Z + ZP) ^ 2);

G2 = exp (-j * K * RMINUS) / (4 * pi * RMINUS) + ...


exp (-j * K * RPLUS) / (4 * pi * RPLUS);

% End of the KERNEL function


%****************************************************************

end
%****************************************************************
% FUNCTION ZMINUS
%
function value = ZMINUS (TH, LG, NM)

K = 2 * pi;

[Fecha] 34
F2M = 2 * NM - 1;

ARG1 = (F2M * pi / LG - K * cos (TH)) * (LG / 2);


if (ARG1 == 0)
value = 1;
else
value = sin (ARG1) / ARG1;
end

% End of the ZMINUS function


%****************************************************************

end
%****************************************************************
% FUNCTION ZPLUS
%
function value = ZPLUS (TH, LG, NM)

K = 2 * pi;

F2M = 2 * NM - 1;

ARG2 = (F2M * pi / LG + K * cos (TH)) * (LG / 2);


if (ARG2 == 0)
value = 1;
else
value = sin (ARG2) / ARG2;
end

% End of the ZPLUS function


%****************************************************************

end
%****************************************************************
% FUNCTION FXZ
%
function value = FXZ (THETA, PHI, N, M, Inm, YP)
global L

K = 2 * pi;
AZ = 0;

I = 1;
while I <= N

IZP = 0;

J = 1;
while J <= M

MODE = J;
LEN = L (I);
ANG = THETA;

IZP = IZP + Inm (I, J) * ...

[Fecha] 35
(ZMINUS (ANG, LEN, MODE) + ...
ZPLUS (ANG, LEN, MODE));
J = J + 1;
end

AEXP = K * YP (I) * sin (THETA) * sin (PHI);


AZ = AZ + L(I) * exp (j * AEXP) * IZP;

I = I + 1;
end

U = 3.75 * pi * abs (AZ) ^ 2 * sin (THETA) ^ 2;

value = sin (THETA) * U;

% End of the FXZ function


%****************************************************************

end

%****************************************************************
% FUNCTION LUDEC
%
function [A, IPERM, SCAL] = LUDEC (Z, N)

% REPLACES MATRIX BY ITS LU DECOMPOSITION


% GET SCALING INFO.

I = 1;
while I <= N

ZMAX = 0;

J = 1;
while J <= N

CAZ = abs (Z (I,J));


if (CAZ > ZMAX)
ZMAX = CAZ;
end
J = J + 1;
end

SCAL (I) = 1 / ZMAX;


I = I + 1;
end

% CROUT's algorithm.
J = 1;
while J <= N

I = 1;
while I <= (J - 1)

K = 1;

[Fecha] 36
while K <= (I - 1)
Z (I, J) = Z (I, J) - Z (I, K) * Z (K, J);
K = K + 1;
end

I = I + 1;
end

% SEARCH FOR LARGEST PIVOT ELEMENT.


ZMAX = 0;

I = J;
while I <= N

K = 1;
while K <= (J - 1)
Z (I, J) = Z (I, J) - Z (I, K) * Z (K, J);
K = K + 1;
end

TEST = SCAL (I) * abs (Z (I, J));

if (round ((TEST - ZMAX) * 10 ^ 8) > 0) % Work around way


IMAX = I;
ZMAX = TEST;
end

I = I + 1;
end

% INTERCHANGE THE ROWS.


if (J ~= IMAX)

K = 1;
while K <= N
TEMP = Z (IMAX, K);
Z (IMAX, K) = Z (J, K);
Z (J, K) = TEMP;
K = K + 1;
end
SCAL (IMAX) = SCAL (J);
end

% DIVIDE BY PIVOT ELEMENT.


IPERM (J) = IMAX;
if (J ~= N)

I = J + 1;
while I <= N
Z (I, J) = Z (I, J) / Z (J, J);
I = I + 1;
end
end

J = J + 1;

[Fecha] 37
end

A = Z;

% End of the LUDEC function


%****************************************************************

end
%****************************************************************
% FUNCTION LUSOLV
%
function B = LUSOLV (Z, N, IPERM, V)

% SOLVES LINEAR SYSTEM GIVEN THE LU DECOMPOSITION FROM LUDEC


% FORCING VECTOR IS REPLACED WITH SOLUTION VECTOR UPON EXIT

% FORWARD SUBSTITUTION.
I = 1;
while I <= N

TEMP = V (IPERM (I));


V (IPERM (I)) = V (I);

J = 1;
while J <= (I - 1)
TEMP = TEMP - Z (I, J) * V (J);
J = J + 1;
end

V (I) = TEMP;
I = I + 1;
end

% BACKWARD SUBSTITUTION.
I = 1;
while I <= N
II = N - I + 1;
TEMP = V (II);

J = II + 1;
while J <= N
TEMP = TEMP - Z (II, J) * V (J);
J = J + 1;
end

V (II) = TEMP / Z (II, II);


I = I + 1;
end

B = V;
% End of the LUSOLV function
%****************************************************************
end

[Fecha] 38
%******************************************************************
% FUNCTION SCINT2
% SCINT2 IS A SINGLE PRECISION, COMPLEX, INTEGRATION ROUTINE
% IN 2 DIMENSIONS. THIS ROUTINE USES 16 POINT GAUSSIAN QUADRATURES,
% WITH LEGANDRE COEFFICIENTS. ENTER WITH:
%
% (R)X1 LOWER LIMIT OF X INTEGRATION
% (R)X2 UPPER LIMIT OF X INTEGRATION
% (R)Z1 LOWER LIMIT OF Z INTEGRATION
% (R)Z2 UPPER LIMIT OF Z INTEGRATION
% (C)RES RESULTS OF INTEGRATION
% (I)N NUMBER OF ELEMENTS IN THE ARRAY
% (I)M NUMBER OF MODES PER ELEMENT
% (R)Inm THE ARRAY OF CURRENT COEFFICIENTS
% (R)YP THE ELEMENT DISTANCES ALONG THE Y AXIS
%
%***********************************************************************
%
%
function RES = SCINT2 (X1, X2, Z1, Z2, N, M, Inm, YP)

R = [0.0950125098
0.2816035508
0.4580167777
0.6178762444
0.7554044084
0.8656312024
0.9445750231
0.9894009350
-0.9894009350
-0.9445750231
-0.8656312024
-0.7554044084
-0.6178762444
-0.4580167777
-0.2816035508
-0.0950125098];

W = [0.1894506105
0.1826034150
0.1691565194
0.1495959888
0.1246289713
0.0951585117
0.0622535239
0.0271524594
0.0271524594
0.0622535239
0.0951585117
0.1246289713
0.1495959888
0.1691565194
0.1826034150
0.1894506105];

[Fecha] 39
SX = 0.5 * (X2 + X1);
DX = 0.5 * (X2 - X1);
SZ = 0.5 * (Z2 + Z1);
DZ = 0.5 * (Z2 - Z1);

TT = 0;

J = 1;
while J <= 16

Z = SZ + DZ * R (J);
SS = 0;

I = 1;
while I <= 16

X = SX + DX * R (I);
SS = W (I) * FXZ (X, Z, N, M, Inm, YP) + SS;

I = I + 1;
end

S = DX * SS;
TT = S * W (J) + TT;

J = J + 1;
end

RES = DZ * TT;
% End of the SINT2 function
%****************************************************************

end

%***********************************************************************
% elevation(theta,rho,rmin,rmax,rticks,line_style)
%**********************************************************************
% GAINPLOT makes an antenna gain plot using polar coordinates of
% the angle THETA, in radians, versus the radius RHO, where RHO may
% be negative.
%
% - rmin sets the value of the center of the plot. (for ex. -40 dB)
% - rmax sets the value of the outer ring of the plot (for ex. 0 dB)
% - rticks is the # of radial ticks (or circles) you want.
% it is NOT THE SPACING BETWEEN THEM. Also, if rticks is an even
% number > 5, then it will be divided by 2, or else if rticks > 5
% and divisible by 3, rticks will be divided by 3.
% - linestyle is solid or dashed etc. (default is a solid yellow line)
%
% POLAR(THETA,RHO,S) uses the linestyle specified in string S.
% See PLOT for a description of legal linestyles.
% See also PLOT, LOGLOG, SEMILOGX, SEMILOGY.
%********************************************************************
% Credits:
% S. Bellofiore

[Fecha] 40
% S. Georgakopoulos
% A. C. Polycarpou
% C. Wangsvick
% C. Bishop
%
% Tabulate your data accordingly, and call polar_dB to provide the
% 2-D polar plot
%
% Note: This function is different from the polar.m (provided by
% MATLAB) because RHO is given in dB, and it can be negative
%-----------------------------------------------------------------------------

function hpol = elevation(theta,rho,rmin,rmax,rticks,line_style)

if nargin < 5
error('Requires 5 or 6 input arguments.')
elseif nargin == 5
if isstr(rho)
line_style = rho;
rho = theta;
[mr,nr] = size(rho);
if mr == 1
theta = 1:nr;
else
th = (1:mr)';
theta = th(:,ones(1,nr));
end
else
line_style = 'auto';
end
elseif nargin == 1
line_style = 'auto';
rho = theta;
[mr,nr] = size(rho);
if mr == 1
theta = 1:nr;
else
th = (1:mr)';
theta = th(:,ones(1,nr));
end
end
if isstr(theta) | isstr(rho)
error('Input arguments must be numeric.');
end
if any(size(theta) ~= size(rho))
error('THETA and RHO must be the same size.');
end

% get hold state


cax = newplot;
next = lower(get(cax,'NextPlot'));
hold_state = ishold;

% get x-axis text color so grid is in same color


tc = get(cax,'xcolor');

[Fecha] 41
% Hold on to current Text defaults, reset them to the
% Axes' font attributes so tick marks use them.
fAngle = get(cax, 'DefaultTextFontAngle');
fName = get(cax, 'DefaultTextFontName');
fSize = get(cax, 'DefaultTextFontSize');
fWeight = get(cax, 'DefaultTextFontWeight');
set(cax, 'DefaultTextFontAngle', get(cax, 'FontAngle'), ...
'DefaultTextFontName', get(cax, 'FontName'), ...
'DefaultTextFontSize', get(cax, 'FontSize'), ...
'DefaultTextFontWeight', get(cax, 'FontWeight') )

% only do grids if hold is off


if ~hold_state

% make a radial grid


hold on;
% v returns the axis limits
% changed the following line to let the y limits become negative
hhh=plot([0 max(theta(:))],[min(rho(:)) max(rho(:))]);
v = [get(cax,'xlim') get(cax,'ylim')];
ticks = length(get(cax,'ytick'));
delete(hhh);

% check radial limits (rticks)

if rticks > 5 % see if we can reduce the number


if rem(rticks,2) == 0
rticks = rticks/2;
elseif rem(rticks,3) == 0
rticks = rticks/3;
end
end

% define a circle
th = 0:pi/50:2*pi;
xunit = cos(th);
yunit = sin(th);
% now really force points on x/y axes to lie on them exactly
inds = [1:(length(th)-1)/4:length(th)];
xunits(inds(2:2:4)) = zeros(2,1);
yunits(inds(1:2:5)) = zeros(3,1);

rinc = (rmax-rmin)/rticks;

% label r
% change the following line so that the unit circle is not multiplied
% by a negative number. Ditto for the text locations.
for i=(rmin+rinc):rinc:rmax
is = i - rmin;
plot(xunit*is,yunit*is,'-','color',tc,'linewidth',0.5);
text(0,is+rinc/20,[' ' num2str(i)],'verticalalignment','bottom' );
end
% plot spokes
th = (1:6)*2*pi/12;

[Fecha] 42
cst = cos(th); snt = sin(th);
cs = [-cst; cst];
sn = [-snt; snt];
plot((rmax-rmin)*cs,(rmax-rmin)*sn,'-','color',tc,'linewidth',0.5);

% plot the ticks


george=(rmax-rmin)/30; % Length of the ticks
th2 = (0:36)*2*pi/72;
cst2 = cos(th2); snt2 = sin(th2);
cs2 = [(rmax-rmin-george)*cst2; (rmax-rmin)*cst2];
sn2 = [(rmax-rmin-george)*snt2; (rmax-rmin)*snt2];
plot(cs2,sn2,'-','color',tc,'linewidth',0.15); % 0.5
plot(-cs2,-sn2,'-','color',tc,'linewidth',0.15); % 0.5

% annotate spokes in degrees


% Changed the next line to make the spokes long enough
rt = 1.1*(rmax-rmin);
for i = 1:max(size(th))
text(rt*cst(i),rt*snt(i),int2str(abs(i*30-
90)),'horizontalalignment','center' );
if i == max(size(th))
loc = int2str(90);
elseif i*30+90<=180
loc = int2str(i*30+90);
else
loc = int2str(180-(i*30+90-180));
end
text(-rt*cst(i),-rt*snt(i),loc,'horizontalalignment','center' );
end
% set viewto 2-D
view(0,90);

% set axis limits


% Changed the next line to scale things properly
axis((rmax-rmin)*[-1 1 -1.1 1.1]);
end

% Reset defaults.
set(cax, 'DefaultTextFontAngle', fAngle , ...
'DefaultTextFontName', fName , ...
'DefaultTextFontSize', fSize, ...
'DefaultTextFontWeight', fWeight );

% transform data to Cartesian coordinates.


% changed the next line so negative rho are not plotted on the other side

for i = 1:length(rho)
if (rho(i) > rmin)
if theta(i)*180/pi >=0 & theta(i)*180/pi <=90
xx(i) = (rho(i)-rmin)*cos(pi/2-theta(i));
yy(i) = (rho(i)-rmin)*sin(pi/2-theta(i));
elseif theta(i)*180/pi >=90
xx(i) = (rho(i)-rmin)*cos(-theta(i)+pi/2);
yy(i) = (rho(i)-rmin)*sin(-theta(i)+pi/2);

[Fecha] 43
elseif theta(i)*180/pi < 0
xx(i) = (rho(i)-rmin)*cos(abs(theta(i))+pi/2);
yy(i) = (rho(i)-rmin)*sin(abs(theta(i))+pi/2);
end
else
xx(i) = 0;
yy(i) = 0;
end
end

% plot data on top of grid


if strcmp(line_style,'auto')
q = plot(xx,yy);
else
q = plot(xx,yy,line_style);
end
if nargout > 0
hpol = q;
end
if ~hold_state
axis('equal');axis('off');
end

% reset hold state


if ~hold_state, set(cax,'NextPlot',next); end
end

[Fecha] 44
Análisis de la antena

Impedancia

[Fecha] 45
Patrón de radiación EL

Patrón de radiación AZ

[Fecha] 46
Distribución de la corriente

[Fecha] 47
Patrón de radiación 3D

[Fecha] 48
Conclusión
Durante el desarrollo de este proyecto se pudo concluir el conocimiento acerca de temas
generales como es la construcción de las antenas yagui, de las características, pero
específicamente sobre los elementos que la conforman.
 Como primer paso se realizó el cálculo de la frecuencia en dependencia del uso de
la propia antena, en nuestro caso “radiodifusión”, ósea entre 176-214Mhz y gracias
a este se elaboró la evaluación teórica de los diferentes parámetros y cálculos
necesarios para su eficacia.
 Como segundo paso se elaboró un código en el software Matlab para concluir sus
gráficos tanto en 2D y 3D, para así tener una mejor imagen de las funciones de la
propia antena.
 Como tercero y final, se hizo una reevaluación de los anteriores puntos con
diferentes datos, para así tener una mejor idea de los cambios en su
comportamiento.
El diseño de una antena Yagi es un proceso complejo que requiere la consideración
cuidadosa de varios parámetros. Desde la frecuencia de operación hasta la altura de la
antena, cada parámetro es crucial para obtener el máximo rendimiento de la antena. Es
importante tener en cuenta que una antena Yagi bien diseñada puede ofrecer una ganancia y
directividad significativas en la dirección deseada, lo que la convierte en una excelente
opción para aplicaciones de comunicaciones inalámbricas. Sin embargo, es fundamental
recordar que cada aplicación es única, por lo que el diseño de la antena debe adaptarse a las
necesidades específicas de la aplicación. En nuestro caso, basándonos en las pruebas de las
simulaciones y en los cálculos previos, nuestro diseño de antena es óptimo para la
comunicación inalámbrica entre radios.

[Fecha] 49
Bibliografía
A., B. C. (2005). Antenna Theory Analysis and Design (tercera edición ed.). New Jersey: Wiley.
Recuperado el 20 de Abril de 2022

Balanis, C. A. (1938). Antenna Theory Analysis and Design.

[Fecha] 50

También podría gustarte