1 #ifdef HAVE_STDLIB_H
2 #include <stdlib.h>
3 #endif
4 #include <stdio.h>
5 #ifndef i386
6 
7 #endif
8 #include <math.h>
9 #include <errno.h>
10 #include "yagi.h"
11 #include <errno.h>
12 
self_impedance(int i,double frequency,int driven,int parasitic,double ** data,double ** impedance)13 void self_impedance(int i, double frequency, int driven, int parasitic, double **data, double **impedance)
14 {
15 	int j, row, column_real, column_imag, max_data, ii;
16 	double lambda,  x , length,  diameter;
17 	double radius, real;
18 
19 	ii=i;
20 	/* Put the complex value of impedance for each element into
21 	the array. This is a complex, as the array sizes for
22 	driven and parasitic elements are different */
23 
24 	/* first compute the wavelength */
25 	lambda=3e8/frequency;
26 
27 	row=i; 				   /* write data to row, column_real_or_imag */
28 	column_real=2*i-1;
29 	column_imag=2*i;
30 	if(i <= driven)
31 	{
32 		max_data=MAX_DRIVEN;
33 	}
34 	else if (i > driven)    			 /* parasitic element */
35 	{
36 		max_data=MAX_PARASITIC;
37 		i-=driven;							/* read from i-driven */
38 	}
39 	diameter=data[i][DIAMETER];
40 	length=data[i][LENGTH];
41 	j=2*ii-1;
42 	/* Use method in 'Antenna Theory' Baluns ' */
43 	radius=diameter/2.0;   /* radius */
44 	self(radius,length,lambda,&real,&x);
45 	impedance[row][column_imag]= x; /* write imaginary data to array */
46 	impedance[ii][j]= real;
47 }
48