home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / ee3 / fortab-i.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1989-01-22  |  2.0 KB  |  63 lines

  1. 10  CLS: PRINT "FOURIER ANALYSIS OF A GIVEN WAVEFORM V1.1 (5/84)"
  2. 12  REM: CHANGED FORMAT LINES 180,340 TO 352,460 TO 472 GH 6/10/86
  3. 20  PRINT: INPUT "ENTER NUMBER OF HARMONICS (10)"; QH
  4. 30  IF QH=0 THEN QH=10
  5. 40  INPUT "NUMBER OF INTEGRATION POINTS"; M
  6. 50  DIM A(QH), B(QH), C(QH), AM(M), L(M), X(M)
  7. 60  INPUT "DO YOU WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN D=2
  8. 70  PRINT: PRINT: PRINT "ENTER VALUE OF PERIOD";
  9. 80  INPUT T: PRINT
  10. 90  PI=4*ATN(1): P2=2*PI: NH=QH: DT=T/M
  11. 100  L=T/M
  12. 110  X=0
  13. 120  FOR I=0 TO M
  14. 130  L(I)=L*X
  15. 140  X=X+1
  16. 150  NEXT I
  17. 160  PRINT "ENTER THE VOLTAGE WHICH CORRESPONDES TO TIME POINT"
  18. 170  FOR Z=0 TO M
  19. 180  PRINT USING  "AT T = ##.###^^^^   "; L(Z);
  20. 190  INPUT X(Z)
  21. 200  NEXT Z
  22. 210  S=0: FOR I=0 TO M: S=S+X(I): NEXT
  23. 220  A0=(DT/T)*(S-(X(0)+X(M))/2)
  24. 222  IF D=0 THEN PRINT: PRINT "A0="A0
  25. 224  IF D=2 THEN LPRINT: LPRINT "A0="A0
  26. 230  REM CALC AC TERMS
  27. 240  IF D=0 THEN PRINT: PRINT " N", "  A(N)", "   B(N)", "   C(N)"
  28. 242  IF D=2 THEN LPRINT: LPRINT " N", "  A(N)", "   B(N)", "   C(N)"
  29. 250  FOR N=1 TO NH: AS=0: BS=0
  30. 260  FOR I=0 TO M: TI=I*DT: NW=P2*TI*N/T
  31. 270  AS=AS+X(I)*COS(NW): BS=BS+X(I)*SIN(NW): NEXT
  32. 280  A(N)=2*(DT/T)*(AS-(X(0)+X(M))/2)
  33. 290  B(N)=2*(DT/T)*BS: C(N)=SQR(A(N)^2+B(N)^2)
  34. 300  IF D=0 THEN PRINT USING "##           ";N;:PRINT USING "##.###^^^^     "; A(N), B(N), C(N)
  35. 302  IF D=2 THEN LPRINT USING "##           ";N;:LPRINT USING "##.###^^^^     "; A(N), B(N), C(N)
  36. 304  NEXT
  37. 310  REM SPECTRUM PLOT
  38. 320  IF D=0 THEN PRINT: PRINT "SPECTRUM PLOT"
  39. 322  IF D=2 THEN LPRINT: LPRINT "SPECTRUM PLOT"
  40. 330  FOR N=1 TO NH: IF CM<C(N) THEN CM=C(N)
  41. 340  NEXT: FOR N=1 TO NH: F=N/T: NC=INT(50*C(N)/CM)
  42. 350  IF D=0 THEN PRINT USING "##.###^^^^";F;: FOR I=0 TO NC: IF D=0 THEN PRINT TAB(15+I); "*";: NEXT
  43. 352  IF D=2 THEN LPRINT USING "##.###^^^^";F;: FOR I=0 TO NC: IF D=2 THEN LPRINT TAB(15+I); "*";: NEXT
  44. 360  IF D=0 THEN PRINT
  45. 362  IF D=2 THEN LPRINT
  46. 364  NEXT
  47. 370  REM CALC WAVEFORM
  48. 380  IF D=0 THEN PRINT: PRINT "RECONSTRUCTED WAVEFORM"
  49. 382  IF D=2 THEN LPRINT: LPRINT "RECONSTRUCTED WAVEFORM"
  50. 390  FOR I=0 TO M: TI=I*DT: AM(I)=A0: W=P2*TI/T
  51. 400  FOR N=1 TO NH: AM(I)=AM(I)+A(N)*COS(N*W)+B(N)*SIN(N*W): NEXT
  52. 410  NEXT
  53. 420  REM PLOT WAVEFORM
  54. 430  FOR I=0 TO M: IF MX<AM(I) THEN MX=AM(I)
  55. 440  IF MN>AM(I) THEN MN=AM(I)
  56. 450  NEXT: FOR I=0 TO M : TI=I*DT
  57. 460  NA=INT(50*(AM(I)-MN)/(MX-MN))
  58. 470  IF D=0 THEN PRINT USING "##.###^^^^";TI;:PRINT TAB(15+NA); "*"
  59. 472  IF D=2 THEN LPRINT USING "##.###^^^^";TI;:LPRINT TAB(15+NA); "*"
  60. 474  NEXT
  61. 480  IF D=2 THEN END ELSE PRINT: INPUT "DO YOU WANT HARD COPY (Y/N)"; Q$
  62. 490  IF Q$="Y" THEN D=2: GOTO 220 ELSE END
  63.