home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / public / penstate / taylor.bas < prev    next >
BASIC Source File  |  1996-06-30  |  5KB  |  147 lines

  1. 5 '///////////// TAYLOR //////////////
  2. 10 CLS:KEY OFF:ON ERROR GOTO 1700
  3. 20 REM  TAYLOR LINE SOURCE  [FROM DR. FERRARO]
  4. 30 DIM A(400),Y(400),F(400),YY(400),W(400),I(400)
  5. 40 PRINT"                        TAYLOR LINE SOURCE SYNTHESIS":PRINT:PRINT
  6. 50 DEF FN ARCOSH(X)=LOG(X+SQR(X*X-1))
  7. 60 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
  8. 70 YMAX=-1000:YMIN=-40
  9. 80 PI=3.141592
  10. 90 INPUT "NUMBER OF EQUAL SIDELOBES ";NB
  11. 100 INPUT"S.L.L (dB) ";RR
  12. 110 INPUT"Aperture length ";L
  13. 120 R=10^(-RR/20): REM  CHANGE FROM DB TO RATIO
  14. 130 A=(1/PI)*FN ARCOSH(R)
  15. 140 S=NB/SQR(A^2+(NB-.5)^2): REM  S ==> SIGMA EQN 10-76
  16. 150 J=0
  17. 160 PRINT"n         a(n)              wn"
  18. 170 FOR N=-NB+1 TO NB-1
  19. 180 X=NB-1
  20. 190 GOSUB 420
  21. 200 C=P
  22. 210 C=C^2
  23. 220 X=NB-1+N
  24. 230 GOSUB 420
  25. 240 D=P
  26. 250 X=NB-1-N
  27. 260 GOSUB 420
  28. 270 E=P
  29. 280 F=C/(D*E)
  30. 290 P=1
  31. 300 FOR M=1 TO NB-1
  32. 310 XM=S*SQR(A^2+(M-.5)^2)
  33. 320 P=P*(1-(N/XM)^2)
  34. 330 NEXT M
  35. 340 SA=F*P
  36. 350 A(J)=SA
  37. 360 W(J)=N/L
  38. 370 'IF N<NB THEN W(J)=SGN((S/L)*SQR(A*A+(N-.5)*(N-.5)))
  39. 380 PRINT USING "##       ##.######           ##.##";N;A(J);W(J)
  40. 390 J=J+1
  41. 400 NEXT N
  42. 410 GOTO 470
  43. 420 P=1: IF X=0 THEN RETURN
  44. 430 FOR I=0 TO X-1
  45. 440 P=P*(X-I)
  46. 450 NEXT I
  47. 460 RETURN
  48. 470 '
  49. 480 PRINT:PRINT"HALF POWER BEAMWIDTHS :-":PRINT
  50. 490 Q=FN ARCOSH(R):X=FN ARCOSH(R/1.414)
  51. 500 QQ=(S/(L*PI))*SQR(Q*Q-X*X)
  52. 510 HP=2*ATN(QQ/SQR(1-QQ*QQ)):HPD=HP*180/PI
  53. 520 HPWI=HP/S:HPWID=HPWI*180/PI
  54. 530 PRINT USING "HP wi = ##.###";HPWI;:PRINT USING" rad      HP i= ##.##";HPWID;:PRINT" deg"
  55. 540 PRINT USING "HP w  = ##.###";HP;:  PRINT USING" rad      HP  = ##.##";HPD;:PRINT" deg"
  56. 550 '
  57. 560 LOCATE 23,1:GOSUB 1290
  58. 570 FOR THETA=0 TO 180
  59. 580   W=COS(THETA*PI/180)
  60. 590   F(THETA)=0
  61. 600   I=0
  62. 610   FOR N=-NB+1 TO NB-1
  63. 620     AA=(W-W(I))*L*PI
  64. 630     IF AA=0 THEN F(THETA)=F(THETA)+A(I):GOTO 660
  65. 640     F(THETA)=F(THETA)+A(I)*SIN(AA)/AA
  66. 650 I=I+1
  67. 660   NEXT N
  68. 670   Y(THETA)=ABS(F(THETA))
  69. 680 Y(THETA)=20*FN LOGTEN(Y(THETA))
  70. 690   IF Y(THETA)>YMAX THEN YMAX=Y(THETA)
  71. 700 NEXT THETA
  72. 710 YMIN=2*RR+YMAX
  73. 720 LOCATE 23,1:PRINT"TYPE RETURN TO CONTINUE...                ";:INPUT W
  74. 730 GOSUB 970
  75. 740 GOSUB 1050
  76. 750 LOCATE 4,75:PRINT"dB"
  77. 760 LOCATE 23,1:GOSUB 1290
  78. 770 ' current distribution
  79. 780 YMIN=0:YMAX=0
  80. 790 MAGS=L/2
  81. 800 I=0
  82. 810 FOR S=-MAGS TO MAGS+MAGS/25 STEP MAGS/100
  83. 820   SUM=0
  84. 830   FOR N=1 TO NB-1
  85. 840     SUM=SUM+A(N+NB-1)*COS(2*PI*N*S/L)
  86. 850   NEXT N
  87. 860   I(I)=(1+2*SUM)/L
  88. 870   Y(I)=ABS(I(I))
  89. 880   IF Y(I)>YMAX THEN YMAX=Y(I)
  90. 890   IF Y(I)<YMIN THEN YMIN=Y(I)
  91. 900   I=I+1
  92. 910 NEXT S
  93. 920 LOCATE 23,1:PRINT"                  TYPE RETURN TO CONTINUE...";:INPUT W
  94. 930 GOSUB 970:GOSUB 1150
  95. 940 LOCATE 4,75:PRINT"    "
  96. 950 GOSUB 1310
  97. 960 END
  98. 970 '      set up screen
  99. 980 SCREEN 2:CLS
  100. 990 FOR K=7 TO 67 STEP 10:LOCATE 20,K:PRINT"+":NEXT K
  101. 1000 FOR K=4 TO 20 STEP 4:LOCATE K,67:PRINT"-":NEXT K
  102. 1010 VIEW (52,28)-(530,154),,1
  103. 1020 LINE (239,0)-(239,154)
  104. 1030 RETURN
  105. 1040 '
  106. 1050 PSET (0,Y(0))
  107. 1060 WINDOW (0,YMIN)-(180,YMAX)
  108. 1070 FOR X=0 TO 180
  109. 1080   LINE -(X,Y(X))
  110. 1090 NEXT X
  111. 1100 LOCATE 3,20:PRINT"MAGNITUDE  OF SYNTHESISED PATTERN"
  112. 1110 FOR K=4 TO 20 STEP 4:LOCATE K,68:PRINT USING "###.##";-(YMAX-YMIN)*(K-4)/16:NEXT K
  113. 1120 LOCATE 21,6:PRINT"180":LOCATE 21,37:PRINT"90":LOCATE 21,67:PRINT"0"
  114. 1130 RETURN
  115. 1140 '
  116. 1150 '      MAY 29, 1986
  117. 1160 '      RECTANGULAR PLOT OF DATA
  118. 1170 LOCATE 3,20:PRINT"MAGNITUDE OF CURRENT DISTRIBUTION"
  119. 1180 '
  120. 1190 WINDOW (1,YMIN)-(I,YMAX)
  121. 1200 '
  122. 1210 PSET (1,Y(1))
  123. 1220 FOR X=1 TO I
  124. 1230   LINE -(X,Y(X))
  125. 1240 NEXT X
  126. 1250 FOR K=4 TO 20 STEP 4:LOCATE K,68:PRINT USING "##.##";(20-K)*YMAX/16:NEXT K
  127. 1260 LOCATE 21,6:PRINT-L/2:LOCATE 21,37:PRINT"0  ":LOCATE 21,66:PRINT L/2
  128. 1270 RETURN
  129. 1280 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
  130. 1290 PRINT"I'm doing some calculation.  Please wait..."
  131. 1300 RETURN
  132. 1310 T$="DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1370
  133. 1320 AN$=INKEY$
  134. 1330 IF AN$="Y" OR AN$="y" THEN RUN
  135. 1340 IF AN$="N" OR AN$="n" THEN END
  136. 1350 GOTO 1310
  137. 1360 :
  138. 1370 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$:RETURN    'SUBROUTINE TO CENTRE TEXT
  139. 1500 SCREEN 0,0,0:SOUND 1510,10:COLOR 7,0:LOCATE 25,10:PRINT "Key: Esc to End or `R' to Run Again or `S' to Return Start";CHR$(29);:COLOR 15,0:LOCATE 25,15:PRINT "Esc";:LOCATE 25,30:PRINT "R";:LOCATE 25,50:PRINT "S";CHR$(29);:COLOR 7,0
  140. 1510 E$=INKEY$:IF E$="" THEN 1510 ELSE IF E$=CHR$(27) THEN CLS:END ELSE IF E$="R" OR E$="r" THEN RUN ELSE IF E$="S" OR E$="s" THEN RUN "START
  141. 1520 GOTO 1510
  142. 1600 '//////////////// Routine to Draw a Box //////////////////
  143. 1610 LOCATE Y1,X1+1:PRINT STRING$(X2-X1-1,"─");:LOCATE Y1,X1:PRINT "┌";:LOCATE Y1,X2:PRINT "╖";:FOR I= Y1+1 TO Y2-1:LOCATE I,X1:PRINT "│";:LOCATE I,X2:PRINT "║";:NEXT:LOCATE Y2,X1:PRINT "╘";:LOCATE Y2,X1+1
  144. 1620 PRINT STRING$(X2-X1-1,"═");:LOCATE Y2,X2:PRINT "╝";:RETURN
  145. 1700 SCREEN 0,0,0:COLOR 31,1:LOCATE 24,1:PRINT "Fault Detected";CHR$(29);:COLOR 7,0
  146. 1710 RESUME 1500
  147.