📄 sample3.c
字号:
#include <cvirte.h> /* Needed if linking in external compiler; harmless otherwise */
#include <userint.h>
#include <math.h>
#include <analysis.h>
#include <ansi_c.h>
#include "sample3.h"
static int panelHandle;
static int typenn;
int num,status;
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0) /* Needed if linking in external compiler; harmless otherwise */
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "sample3.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
return 0;
}
int CVICALLBACK Filtertype (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
//选择滤波器类型
GetCtrlVal (panelHandle, PANEL_RING, &status);
switch (status)
{
case 0:
typenn=0;
break;
case 1:
typenn=1;
break;
case 2:
typenn=2;
break;
}
break;
case EVENT_RIGHT_CLICK:
break;
}
return 0;
}
int CVICALLBACK Tuichu (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
case EVENT_RIGHT_CLICK:
break;
}
return 0;
}
int CVICALLBACK Zhixing (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
//定义变量,分别表示滤波器纹波系数、衰减系数、截止频率,数组个数
int order;
double ripple,attenuation,samplefrequency,cutofffrequency;
int n=500;
//定义数组,x表示滤波前数组,y表示滤波后数组、datapoints表示白噪声干扰,numpoints表示正弦信号
double x[500],y[500],datapoints[500],numpoints[500];
switch (event)
{
case EVENT_COMMIT:
//产生白噪声干扰信号
WhiteNoise(n,1.0,1,datapoints);
//产生正弦信号
SinePattern(n,10.0,0.0,5.0,numpoints);
//白噪声和正弦信号迭加
Add1D (datapoints, numpoints, n, x);
DeleteGraphPlot (panelHandle, PANEL_GRAPH1, -1, VAL_DELAYED_DRAW);
PlotY (panelHandle, PANEL_GRAPH1, x, n,
VAL_DOUBLE, VAL_THIN_LINE, VAL_NO_POINT, VAL_SOLID, 1,
VAL_BLACK);
//获取滤波器波纹系数
GetCtrlVal (PANEL, PANEL_RIPPLE, &ripple);
//获取滤波器衰减系数
GetCtrlVal (PANEL, PANEL_ATTENUATION, &attenuation);
//获取滤波器阶数
GetCtrlVal (PANEL, PANEL_ORDER, &order);
//获取滤波器上限频率
GetCtrlVal (PANEL, PANEL_CUTOFF, &cutofffrequency);
//获取采样频率
GetCtrlVal (PANEL, PANEL_SAMPLEFRE, &samplefrequency);
if (typenn==0)
{
//巴特沃斯低通滤波
Bw_LPF(x,n,samplefrequency,cutofffrequency,order,y);
}
if (typenn==1)
{
//切比雪夫低通滤波
Ch_LPF(x,n,samplefrequency,cutofffrequency,ripple,order,y);
}
if (typenn==2)
{
//椭圆低通滤波
Elp_LPF(x,n,samplefrequency,cutofffrequency,ripple,attenuation,order,y);
}
DeleteGraphPlot (panelHandle, PANEL_GRAPH2, -1, VAL_DELAYED_DRAW);
PlotY (panelHandle, PANEL_GRAPH2, y, n,
VAL_DOUBLE, VAL_THIN_LINE, VAL_NO_POINT, VAL_SOLID, 1,
VAL_BLACK);
break;
case EVENT_RIGHT_CLICK:
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -