home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l292 / 1.ddi / FFTWINDE.FOR < prev    next >
Encoding:
Text File  |  1989-10-10  |  3.8 KB  |  107 lines

  1.       INCLUDE 'misciofi.for'
  2.       INCLUDE 'stdhdr.for'
  3.       REAL xdata(0 : maxv), ydata(0: maxv), rr
  4.       REAL tdata(0 : maxv), xcopy(0 : maxv), ycopy(0: maxv)
  5.       INTEGER  n, i, wind
  6.       CHARACTER * 80  tempstr
  7.       CHARACTER ch,scancode
  8.       LOGICAL bw
  9.  
  10.       n = 128
  11.       DO i = 0, n - 1
  12.         CALL Random(rr)
  13.         xdata(i) = 6 * COS(pi * i / (19.0+RR))+3.5*
  14.      +     COS(pi*i/12.0) + 3.0 * SIN(pi*i/4.0) +
  15.      +     7 * rr * SIN(pi*i/(8.0 + rr))
  16.         ydata(i) = 1.0
  17.         tdata(i) = REAL(i) +1.0
  18.       END DO
  19.       CALL InitSEGraphics(-1, 'c:\for\lib\*.fon')
  20.       CALL BlackAndWhite(bw)
  21.       wind = 1
  22.       DO WHILE (Wind .GE. 0 .AND. wind .LT. 6)
  23.         CALL SetCurrentWindow(10)
  24.         CALL ClearWindow
  25.         CALL BorderCurrentWindow(10)
  26.         CALL LabelGraphWindow(100.0, 900.0,
  27.      +       'FFT Window Options ( 0-5 ): ', 0, 0)
  28.         CALL LabelGraphWindow(100.0, 800.0,
  29.      +       '0 - Rectangular ', 0, 0)
  30.         CALL LabelGraphWindow(100.0, 700.0,
  31.      +        '1 - Parzen ', 0, 0)
  32.         CALL LabelGraphWindow(100.0, 600.0,
  33.      +        '2 - Hanning ', 0, 0)
  34.         CALL LabelGraphWindow(100.0, 500.0,
  35.      +        '3 - Welch ', 0, 0)
  36.         CALL LabelGraphWindow(100.0, 400.0,
  37.      +        '4 - Hamming ', 0, 0)
  38.         CALL LabelGraphWindow(100.0, 300.0,
  39.      +        '5 - Exact Blackman ', 0, 0)
  40.         CALL LabelGraphWindow(100.0, 200.0,
  41.      +       '6 - Exit ', 0, 0)
  42.         CALL LabelGraphWindow(100.0, 100.0, 'Enter Selection ? ',0,0)
  43.         CALL ReadKey(ch,scancode)
  44.         WIND = ICHAR(ch)-48
  45.         CALL RealToString(REAL(wind),0,1, tempStr)
  46.         CALL LabelGraphWindow(600.0, 100.0, tempStr, 0, 0)
  47.         CALL CopyVectors(xdata, xcopy, n)
  48.         CALL CopyVectors(ydata, ycopy, n)
  49.         IF (wind .lt. 6) THEN
  50.           CALL SetCurrentWindow(7)
  51.           CALL ClearWindow
  52.           IF( .NOT. BW)  CALL SetViewBackground(11)
  53.           CALL SetAxesType(0, 0)
  54.           CALL SelectColor(2)
  55.           CALL AutoAxes(tdata, xcopy, n, 0)
  56.           CALL LinePlotData(tdata, xcopy, n, 1, 0)
  57.           CALL SelectColor(3)
  58.           CALL TitleWindow('Raw Signal Data')
  59.           CALL SetLineStyleXX(1, 1)
  60.           CALL DrawGrid(10)
  61.           CALL SetLineStyleXX(0, 1)
  62.           CALL BorderCurrentWindow(1)
  63.           CALL WindowFFTData(xcopy, ycopy, n, wind)
  64.  
  65.           CALL SetCurrentWindow(8)
  66.           CALL ClearWindow
  67.           IF (.NOT. BW) CALL SetViewBackground(14)
  68.           CALL SetAxesType(0, 0)
  69.           CALL SelectColor(2)
  70.           CALL AutoAxes(tdata, xcopy, n, 0)
  71.           CALL LinePlotData(tdata, xcopy, n, 1, 0)
  72.           CALL SelectColor(3)
  73.           SELECT CASE (wind)
  74.             CASE (0)
  75.               CALL TitleWindow('Signal X Rectangular Window')
  76.             CASE (1)
  77.               CALL TitleWindow('Signal X Parzen Window')
  78.             CASE (2)
  79.               CALL TitleWindow('Signal X Hanning Window')
  80.             CASE (3)
  81.               CALL TitleWindow('Signal X Welch Window')
  82.             CASE (4)
  83.               CALL TitleWindow('Signal X Hamming Window ')
  84.             CASE (5)
  85.               CALL TitleWindow('Signal X Exact Blackman Window')
  86.           END SELECT
  87.           CALL BorderCurrentWindow(wind + 1)
  88.  
  89.           CALL PowerSpectrumCalc(xcopy, ycopy, n, 0.01)
  90.           CALL SetCurrentWindow(9)
  91.           CALL ClearWindow
  92.           IF (.NOT. BW) CALL SetViewBackground(15)
  93.           CALL SelectColor(2)
  94.           CALL SetAxesType(0, 0)
  95.           CALL AutoAxes(ycopy, xcopy, n / 2, 1)
  96.           CALL LinePlotData(ycopy, xcopy, n / 2 - 1, 3, 0)
  97.           CALL TitleWindow('Power Spectrum')
  98.           CALL TitleXAxis('Frequency')
  99.           CALL TitleYAxis('Power')
  100.           CALL BorderCurrentWindow(9)
  101.         END IF
  102.       END DO
  103.       CALL CloseSEGraphics
  104.       END
  105.  
  106.  
  107.