home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c129 / 1.ddi / FFTWINDE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1989-04-11  |  3.0 KB  |  106 lines

  1. # include <math.h>
  2. # include <graph.h>
  3. # include <stdlib.h>
  4. # include <stdio.h>
  5. # include "miscio.h"
  6. # include "fft.h"
  7. # include "worlddr.h"
  8. # include "segraph.h"
  9.  
  10. float xdata[128], ydata[128], xcopy[128], ycopy[128], tdata[128];
  11. int code,lower,upper,n,i,j,k,window;
  12. char ch, chstr[2] = {0,0};
  13. float pi = 3.14159;
  14. extern BlackAndWhite;
  15.  
  16.  
  17. void main(){
  18.   n = 128;
  19.   for ( i= 0; i <= n-1; i++) {
  20.     xdata[i] = 6 * cos(pi*i/(19.0 + (rand()/32767.0)))
  21.            + 3.5 *cos(pi*i/12.0 ) +
  22.            3.0 * sin(pi*i/4) + 7*(rand()/32767.0)
  23.            *sin(pi*i/(8.0+(rand()/32767.0)));
  24.     ydata[i] = 0;
  25.     tdata[i] = i;
  26.   }
  27.     ClrScr();
  28.     InitSEGraphics(6);
  29.   do{
  30.     SetCurrentWindow(10);
  31.     ClearWindow();
  32.     BorderCurrentWindow(10);
  33.     LabelGraphWindow(100,900,"FFT Window Options ( 0-5 ): ",0,0);
  34.     LabelGraphWindow(100,800,"0 - Rectangular ",0,0);
  35.     LabelGraphWindow(100,700,"1 - Parzen ",0,0);
  36.     LabelGraphWindow(100,600,"2 - Hanning ",0,0);
  37.     LabelGraphWindow(100,500,"3 - Welch ",0,0);
  38.     LabelGraphWindow(100,400,"4 - Hamming ",0,0);
  39.     LabelGraphWindow(100,300,"5 - Exact Blackman ",0,0);
  40.     LabelGraphWindow(100,200,"6 - Exit ",0,0);
  41.     LabelGraphWindow(100,100,"Enter Selection ? ",0,0);
  42.     ch = getch();
  43.  
  44.     chstr[0] = ch;
  45.     LabelGraphWindow(6000,100,chstr,0,0);
  46.     window = ch-48;
  47.     CopyVectors( xdata,n, xcopy);
  48.     CopyVectors( ydata,n, ycopy );
  49.     if (window <6)    {
  50.       SetCurrentWindow(7);
  51.       ClearWindow();
  52.       if (BlackAndWhite == 0)
  53.     SetViewBackground(14);
  54.       SetAxesType(0,0);
  55.       SelectColor(2);
  56.       AutoAxes(tdata,xcopy,n,0);
  57.       LinePlotData(tdata, xcopy, n,1, 0);
  58.       SelectColor(3);
  59.       TitleWindow("Raw Signal Data");
  60.       setlinestyleXX(1,0,1);
  61.       DrawGrid(10);
  62.       setlinestyleXX(0,0,1);
  63.       BorderCurrentWindow(1);
  64.       WindowFFTData(xcopy,ycopy,n,window);
  65.  
  66.       SetCurrentWindow(8);
  67.       ClearWindow();
  68.       if (BlackAndWhite == 0)
  69.     SetViewBackground(12);
  70.       SetAxesType(0,0);
  71.       SelectColor(2);
  72.       AutoAxes(tdata,xcopy,n,0);
  73.       LinePlotData(tdata, xcopy, n,1, 0);
  74.       SelectColor(3);
  75.       switch (window) {
  76.     case 0 : TitleWindow( "Signal X Rectangular Window"); break;
  77.     case 1 : TitleWindow( "Signal X Parzen Window"); break;
  78.     case 2 : TitleWindow( "Signal X Hanning Window"); break;
  79.     case 3 : TitleWindow( "Signal X Welch Window"); break;
  80.     case 4 : TitleWindow( "Signal X Hamming Window "); break;
  81.     case 5 : TitleWindow( "Signal X Exact Blackman Window"); break;
  82.       }
  83.       BorderCurrentWindow(window+1);
  84.  
  85.       PowerSpectrumCalc(xcopy,ycopy,n,0.01);
  86.       SetCurrentWindow(9);
  87.       ClearWindow();
  88.       if (BlackAndWhite == 0)
  89.     SetViewBackground(3);
  90.       SelectColor(1);
  91.       SetAxesType(0,0);
  92.       xcopy[31] = 2.0;
  93.       AutoAxes(ycopy,xcopy,n / 2,0);
  94.       LinePlotData(ycopy, xcopy, n / 2 - 1,5, 0);
  95.       TitleWindow("Power Spectrum");
  96.       TitleXAxis("Frequency");
  97.       TitleYAxis("Power Density");
  98.       BorderCurrentWindow(9);
  99.       }
  100.    }
  101.    while ( window < 6);
  102.    CloseSEGraphics();
  103. }
  104.  
  105.  
  106.