?? 信號產(chǎn)生.txt
字號:
#include "toolbox.h"
#include <ansi_c.h>
#include <analysis.h>
#include <cvirte.h>
#include <userint.h>
#include "signal generation.h"
static int panelHandle;
//自定義函數(shù),產(chǎn)生信號波形
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);
//裝載界面時產(chǎn)生信號
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:
//調(diào)用產(chǎn)生波形函數(shù)
drawgraph ();
}
return 0;
}
//產(chǎn)生信號波形
void drawgraph (void)
{
double amp;
int cycle;
double phase;
int samplepoint;
double *wave;
int type;
//以下代碼為獲得信號的單周期采樣點數(shù)、周期、增益、相位信息
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);
//獲得信號的總采樣點數(shù)
samplepoint = samplepoint * cycle;
//為信號波形數(shù)組動態(tài)分配內(nèi)存
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:
//抽樣函數(shù)信號
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);
//釋放動態(tài)分配的內(nèi)存
free (wave);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -