Advertisement
Guest User

widmo1

a guest
Jun 29th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int CVICALLBACK WyznaczWidmo (int panel, int control, int event,
  2.         void *callbackData, int eventData1, int eventData2)
  3. {
  4.     double *im,*im1;
  5.     double *re, *re1;
  6.     double *modul,*modul1;
  7.     double deltaf;
  8.     double *f;
  9.     double *arg,*arg1;
  10.     double *mod,*mod1;
  11.     int i;
  12.    
  13.  
  14.    
  15.     if (event == EVENT_COMMIT)
  16.  
  17.     {  
  18.         re=malloc(sizeof(double)*LiczPro);
  19.         im=malloc(sizeof(double)*LiczPro);
  20.         modul=malloc(sizeof(double)*LiczPro);
  21.         arg=malloc(sizeof(double)*LiczPro);
  22.         f=malloc(sizeof(double)*LiczPro);
  23.         mod=malloc(sizeof(double)*LiczPro);
  24.        
  25.         re1=malloc(sizeof(double)*LiczPro);
  26.         im1=malloc(sizeof(double)*LiczPro);
  27.         modul1=malloc(sizeof(double)*LiczPro);
  28.         arg1=malloc(sizeof(double)*LiczPro);
  29.         f=malloc(sizeof(double)*LiczPro);
  30.         mod1=malloc(sizeof(double)*LiczPro);
  31.  
  32.         for(i=0;i<LiczPro;i++)
  33.         {
  34.             re[i]=probki[i];
  35.             re1[i]probki[i];
  36.         }      
  37.        
  38.         ReFFT(re,im,LiczPro);
  39.         ReFFT(re1,im1,LiczPro);
  40.        
  41.         for(i=0;i<LiczPro;i++)
  42.         {
  43.             modul[i]=sqrt(pow(re[i],2)+pow(im[i],2));
  44.             if(i==0)
  45.                 mod[i]=(1.0/LiczPro)*modul[i];
  46.             else
  47.                 mod[i]=(2.0/LiczPro)*modul[i];
  48.         }
  49.         deltaf=CzePro/LiczPro;
  50.  
  51.         for(i=0;i<LiczPro;i++)
  52.         {
  53.             if(re[i]==0)
  54.             {   if(im[i]>0)
  55.                     arg[i]=PI/2;
  56.                 else
  57.                     arg[i]=-PI/2;
  58.             }
  59.             else
  60.             {
  61.                 arg[i]=atan(im[i]/re[i]);
  62.             }
  63.             if(re[i]<0 && im[i]>0)
  64.                 arg[i]=atan(im[i]/re[i])+PI;
  65.             if(re[i]<0 && im[i]<0)
  66.                 arg[i]=atan(im[i]/re[i])-PI;
  67.             arg[i]=(arg[i]*180)/PI;
  68.         }  
  69.        
  70.        
  71.         for(i=0;i<LiczPro;i++)
  72.         {        
  73.             modul1[i]=sqrt(pow(re1[i],2)+pow(im1[i],2));
  74.             if(i==0)
  75.                 mod1[i]=(1.0/LiczPro)*modul1[i];
  76.             else
  77.                 mod1[i]=(2.0/LiczPro)*modul1[i];
  78.         }
  79.         deltaf=CzePro/LiczPro;
  80.        
  81.         for(i=0;i<LiczPro;i++)
  82.             f[i]=deltaf*i;
  83.        
  84.         for(i=0;i<LiczPro;i++)
  85.         {
  86.             if(re1[i]==0)
  87.             {   if(im1[i]>0)
  88.                     arg1[i]=PI/2;
  89.                 else
  90.                     arg1[i]=-PI/2;
  91.             }
  92.             else
  93.             {
  94.                 arg1[i]=atan(im1[i]/re1[i]);
  95.             }
  96.             if(re1[i]<0 && im1[i]>0)
  97.                 arg1[i]=atan(im1[i]/re1[i])+PI;
  98.             if(re1[i]<0 && im1[i]<0)
  99.                 arg1[i]=atan(im1[i]/re1[i])-PI;
  100.             arg1[i]=(arg1[i]*180)/PI;
  101.                
  102.         }
  103.             GetCtrlVal(panelHandle,PANEL_WYBWID, &widmo);
  104.             switch(widmo)
  105.             {
  106.                 case 1:
  107.                     SetCtrlAttribute (panelHandle, PANEL_WIDMOAMP, ATTR_LABEL_TEXT, "Widmo amplitudowe przed filtracja");
  108.                     SetCtrlAttribute (panelHandle, PANEL_WIDMOFAZ, ATTR_LABEL_TEXT, "Widmo amplitudowe po filtracji");
  109.                     DeleteGraphPlot (panelHandle, PANEL_WIDMOAMP, -1, VAL_IMMEDIATE_DRAW);
  110.                     DeleteGraphPlot (panelHandle, PANEL_WIDMOFAZ, -1, VAL_IMMEDIATE_DRAW);
  111.                     PlotXY (panelHandle, PANEL_WIDMOAMP, f, mod, LiczPro/2+1, VAL_DOUBLE, VAL_DOUBLE, VAL_BASE_ZERO_VERTICAL_BAR, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
  112.                     PlotXY (panelHandle, PANEL_WIDMOFAZ, f, mod1, LiczPro/2+1, VAL_DOUBLE, VAL_DOUBLE, VAL_BASE_ZERO_VERTICAL_BAR, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
  113.                     break;
  114.            
  115.                 case 2:
  116.                     SetCtrlAttribute (panelHandle, PANEL_WIDMOAMP, ATTR_LABEL_TEXT, "Widmo fazowe przed filtracja");
  117.                     SetCtrlAttribute (panelHandle, PANEL_WIDMOFAZ, ATTR_LABEL_TEXT, "Widmo fazowe po filtracji");
  118.                     DeleteGraphPlot (panelHandle, PANEL_WIDMOAMP, -1, VAL_IMMEDIATE_DRAW);
  119.                     DeleteGraphPlot (panelHandle, PANEL_WIDMOFAZ, -1, VAL_IMMEDIATE_DRAW);
  120.                     PlotXY (panelHandle, PANEL_WIDMOAMP, f, arg, LiczPro/2+1, VAL_DOUBLE, VAL_DOUBLE, VAL_BASE_ZERO_VERTICAL_BAR, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
  121.                     PlotXY (panelHandle, PANEL_WIDMOFAZ, f, arg1, LiczPro/2+1, VAL_DOUBLE, VAL_DOUBLE, VAL_BASE_ZERO_VERTICAL_BAR, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
  122.                     break;
  123.             }
  124.            
  125.         free(im);
  126.         free(modul);
  127.         free(f);
  128.         free(arg);
  129.         free(mod);
  130.         free(im1);
  131.         free(modul1);
  132.         free(arg1);
  133.         free(mod1);
  134.         free(re);
  135.         free(re1);
  136.     }
  137.     return 0;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement