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