📄 信号产生.txt
字号:
#include "toolbox.h"
#include <ansi_c.h>
#include <analysis.h>
#include <cvirte.h>
#include <userint.h>
#include "signal generation.h"
static int panelHandle;
//自定义函数,产生信号波形
void drawgraph (void);
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "signal generation.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
//装载界面时产生信号
drawgraph ();
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK signalwave (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
//调用产生波形函数
drawgraph ();
}
return 0;
}
//产生信号波形
void drawgraph (void)
{
double amp;
int cycle;
double phase;
int samplepoint;
double *wave;
int type;
//以下代码为获得信号的单周期采样点数、周期、增益、相位信息
GetCtrlVal (panelHandle, PANEL_NUMERIC_SAMPLEPOINT, &samplepoint);
GetCtrlVal (panelHandle, PANEL_NUMERIC_CYCLE, &cycle);
GetCtrlVal (panelHandle, PANEL_NUMERIC_AMP, &);
GetCtrlVal (panelHandle, PANEL_NUMERIC_PHASE, &phase);
//获得信号的类型
GetCtrlVal (panelHandle, PANEL_RING, &type);
DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);
//获得信号的总采样点数
samplepoint = samplepoint * cycle;
//为信号波形数组动态分配内存
wave = malloc (samplepoint * sizeof (double));
switch (type)
{
case 0:
//冲击信号
Impulse (samplepoint, amp, 0, wave);
break;
case 1:
//脉冲信号
Pulse (samplepoint, amp, 0, 10, wave);
break;
case 2:
//斜坡信号
Ramp (samplepoint, 0.0, amp, wave);
break;
case 3:
//正弦信号
SinePattern (samplepoint, amp, phase, cycle, wave);
break;
case 4:
//均匀白噪声信号
Uniform (samplepoint, 1, wave);
break;
case 5:
//白噪声信号
WhiteNoise (samplepoint, amp, 1, wave);
break;
case 6:
//高斯白噪声信号
GaussNoise (samplepoint, 1.0, 1, wave);
break;
case 7:
//扫描频率信号
Chirp (samplepoint, amp, 0.0, 0.5, wave);
break;
case 8:
//余弦信号
SinePattern (samplepoint, amp, 90.0, cycle, wave);
break;
case 9:
//抽样函数信号
Sinc (samplepoint, amp, 0.0, Random (0, 1), wave);
break;
case 10:
//三角波信号
TriangleWave (samplepoint, amp, (double)cycle/samplepoint, &phase, wave);
break;
}
PlotY (panelHandle, PANEL_GRAPH, wave, samplepoint, VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
//释放动态分配的内存
free (wave);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -