home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-08-18 | 2.0 KB | 63 lines |
- 10 CLS: PRINT "FOURIER ANALYSIS OF A GIVEN WAVEFORM V1.1 (5/84)"
- 12 REM: CHANGED FORMAT LINES 180,340 TO 352,460 TO 472 GH 6/10/86
- 20 PRINT: INPUT "ENTER NUMBER OF HARMONICS (10)"; QH
- 30 IF QH=0 THEN QH=10
- 40 INPUT "NUMBER OF INTEGRATION POINTS"; M
- 50 DIM A(QH), B(QH), C(QH), AM(M), L(M), X(M)
- 60 INPUT "DO YOU WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN D=2
- 70 PRINT: PRINT: PRINT "ENTER VALUE OF PERIOD";
- 80 INPUT T: PRINT
- 90 PI=4*ATN(1): P2=2*PI: NH=QH: DT=T/M
- 100 L=T/M
- 110 X=0
- 120 FOR I=0 TO M
- 130 L(I)=L*X
- 140 X=X+1
- 150 NEXT I
- 160 PRINT "ENTER THE VOLTAGE WHICH CORRESPONDES TO TIME POINT"
- 170 FOR Z=0 TO M
- 180 PRINT USING "AT T = ##.###^^^^ "; L(Z);
- 190 INPUT X(Z)
- 200 NEXT Z
- 210 S=0: FOR I=0 TO M: S=S+X(I): NEXT
- 220 A0=(DT/T)*(S-(X(0)+X(M))/2)
- 222 IF D=0 THEN PRINT: PRINT "A0="A0
- 224 IF D=2 THEN LPRINT: LPRINT "A0="A0
- 230 REM CALC AC TERMS
- 240 IF D=0 THEN PRINT: PRINT " N", " A(N)", " B(N)", " C(N)"
- 242 IF D=2 THEN LPRINT: LPRINT " N", " A(N)", " B(N)", " C(N)"
- 250 FOR N=1 TO NH: AS=0: BS=0
- 260 FOR I=0 TO M: TI=I*DT: NW=P2*TI*N/T
- 270 AS=AS+X(I)*COS(NW): BS=BS+X(I)*SIN(NW): NEXT
- 280 A(N)=2*(DT/T)*(AS-(X(0)+X(M))/2)
- 290 B(N)=2*(DT/T)*BS: C(N)=SQR(A(N)^2+B(N)^2)
- 300 IF D=0 THEN PRINT USING "## ";N;:PRINT USING "##.###^^^^ "; A(N), B(N), C(N)
- 302 IF D=2 THEN LPRINT USING "## ";N;:LPRINT USING "##.###^^^^ "; A(N), B(N), C(N)
- 304 NEXT
- 310 REM SPECTRUM PLOT
- 320 IF D=0 THEN PRINT: PRINT "SPECTRUM PLOT"
- 322 IF D=2 THEN LPRINT: LPRINT "SPECTRUM PLOT"
- 330 FOR N=1 TO NH: IF CM<C(N) THEN CM=C(N)
- 340 NEXT: FOR N=1 TO NH: F=N/T: NC=INT(50*C(N)/CM)
- 350 IF D=0 THEN PRINT USING "##.###^^^^";F;: FOR I=0 TO NC: IF D=0 THEN PRINT TAB(15+I); "*";: NEXT
- 352 IF D=2 THEN LPRINT USING "##.###^^^^";F;: FOR I=0 TO NC: IF D=2 THEN LPRINT TAB(15+I); "*";: NEXT
- 360 IF D=0 THEN PRINT
- 362 IF D=2 THEN LPRINT
- 364 NEXT
- 370 REM CALC WAVEFORM
- 380 IF D=0 THEN PRINT: PRINT "RECONSTRUCTED WAVEFORM"
- 382 IF D=2 THEN LPRINT: LPRINT "RECONSTRUCTED WAVEFORM"
- 390 FOR I=0 TO M: TI=I*DT: AM(I)=A0: W=P2*TI/T
- 400 FOR N=1 TO NH: AM(I)=AM(I)+A(N)*COS(N*W)+B(N)*SIN(N*W): NEXT
- 410 NEXT
- 420 REM PLOT WAVEFORM
- 430 FOR I=0 TO M: IF MX<AM(I) THEN MX=AM(I)
- 440 IF MN>AM(I) THEN MN=AM(I)
- 450 NEXT: FOR I=0 TO M : TI=I*DT
- 460 NA=INT(50*(AM(I)-MN)/(MX-MN))
- 470 IF D=0 THEN PRINT USING "##.###^^^^";TI;:PRINT TAB(15+NA); "*"
- 472 IF D=2 THEN LPRINT USING "##.###^^^^";TI;:LPRINT TAB(15+NA); "*"
- 474 NEXT
- 480 IF D=2 THEN END ELSE PRINT: INPUT "DO YOU WANT HARD COPY (Y/N)"; Q$
- 490 IF Q$="Y" THEN D=2: GOTO 220 ELSE END
-