Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int CVICALLBACK WyznaczWidmo (int panel, int control, int event,
- void *callbackData, int eventData1, int eventData2)
- {
- double *im,*im1;
- double *re, *re1;
- double *modul,*modul1;
- double deltaf;
- double *f;
- double *arg,*arg1;
- double *mod,*mod1;
- int i;
- if (event == EVENT_COMMIT)
- {
- re=malloc(sizeof(double)*LiczPro);
- im=malloc(sizeof(double)*LiczPro);
- modul=malloc(sizeof(double)*LiczPro);
- arg=malloc(sizeof(double)*LiczPro);
- f=malloc(sizeof(double)*LiczPro);
- mod=malloc(sizeof(double)*LiczPro);
- re1=malloc(sizeof(double)*LiczPro);
- im1=malloc(sizeof(double)*LiczPro);
- modul1=malloc(sizeof(double)*LiczPro);
- arg1=malloc(sizeof(double)*LiczPro);
- f=malloc(sizeof(double)*LiczPro);
- mod1=malloc(sizeof(double)*LiczPro);
- for(i=0;i<LiczPro;i++)
- {
- re[i]=probki[i];
- re1[i]probki[i];
- }
- ReFFT(re,im,LiczPro);
- ReFFT(re1,im1,LiczPro);
- for(i=0;i<LiczPro;i++)
- {
- modul[i]=sqrt(pow(re[i],2)+pow(im[i],2));
- if(i==0)
- mod[i]=(1.0/LiczPro)*modul[i];
- else
- mod[i]=(2.0/LiczPro)*modul[i];
- }
- deltaf=CzePro/LiczPro;
- for(i=0;i<LiczPro;i++)
- {
- if(re[i]==0)
- { if(im[i]>0)
- arg[i]=PI/2;
- else
- arg[i]=-PI/2;
- }
- else
- {
- arg[i]=atan(im[i]/re[i]);
- }
- if(re[i]<0 && im[i]>0)
- arg[i]=atan(im[i]/re[i])+PI;
- if(re[i]<0 && im[i]<0)
- arg[i]=atan(im[i]/re[i])-PI;
- arg[i]=(arg[i]*180)/PI;
- }
- for(i=0;i<LiczPro;i++)
- {
- modul1[i]=sqrt(pow(re1[i],2)+pow(im1[i],2));
- if(i==0)
- mod1[i]=(1.0/LiczPro)*modul1[i];
- else
- mod1[i]=(2.0/LiczPro)*modul1[i];
- }
- deltaf=CzePro/LiczPro;
- for(i=0;i<LiczPro;i++)
- f[i]=deltaf*i;
- for(i=0;i<LiczPro;i++)
- {
- if(re1[i]==0)
- { if(im1[i]>0)
- arg1[i]=PI/2;
- else
- arg1[i]=-PI/2;
- }
- else
- {
- arg1[i]=atan(im1[i]/re1[i]);
- }
- if(re1[i]<0 && im1[i]>0)
- arg1[i]=atan(im1[i]/re1[i])+PI;
- if(re1[i]<0 && im1[i]<0)
- arg1[i]=atan(im1[i]/re1[i])-PI;
- arg1[i]=(arg1[i]*180)/PI;
- }
- GetCtrlVal(panelHandle,PANEL_WYBWID, &widmo);
- switch(widmo)
- {
- case 1:
- SetCtrlAttribute (panelHandle, PANEL_WIDMOAMP, ATTR_LABEL_TEXT, "Widmo amplitudowe przed filtracja");
- SetCtrlAttribute (panelHandle, PANEL_WIDMOFAZ, ATTR_LABEL_TEXT, "Widmo amplitudowe po filtracji");
- DeleteGraphPlot (panelHandle, PANEL_WIDMOAMP, -1, VAL_IMMEDIATE_DRAW);
- DeleteGraphPlot (panelHandle, PANEL_WIDMOFAZ, -1, VAL_IMMEDIATE_DRAW);
- 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);
- 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);
- break;
- case 2:
- SetCtrlAttribute (panelHandle, PANEL_WIDMOAMP, ATTR_LABEL_TEXT, "Widmo fazowe przed filtracja");
- SetCtrlAttribute (panelHandle, PANEL_WIDMOFAZ, ATTR_LABEL_TEXT, "Widmo fazowe po filtracji");
- DeleteGraphPlot (panelHandle, PANEL_WIDMOAMP, -1, VAL_IMMEDIATE_DRAW);
- DeleteGraphPlot (panelHandle, PANEL_WIDMOFAZ, -1, VAL_IMMEDIATE_DRAW);
- 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);
- 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);
- break;
- }
- free(im);
- free(modul);
- free(f);
- free(arg);
- free(mod);
- free(im1);
- free(modul1);
- free(arg1);
- free(mod1);
- free(re);
- free(re1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement