当前位置:首页 » 编程软件 » 赛尔编程

赛尔编程

发布时间: 2024-10-08 22:30:12

⑴ 镐庢牱鐢–++缂栫▼缁桦埗y=sinx 镄勪竴娈垫洸绾匡纻

涓庝綘𨰾ユ湁镄勮蒋浠舵湁鍏炽傜粯镟茬嚎镄勫叧阌鏄璁$畻鍑烘洸绾跨殑x,y鍧愭爣锛岀劧钖庝袱镣硅繛涓绾裤
涓嬮溃鏄鐢∕S VC++ API 鍐欑殑缁樻洸绾跨▼搴忥纴鐢绘椂搴忔洸绾匡纴鍙缂╂斁锛岀敾搴ф爣鍒诲害..锛岀幇鍒犲幓浜嗕竴浜涘姛鑳斤纸链鍒犲噣锛夛纴渚涘弬钥冦
缂栬疟镞惰嫢链夎﹀憡淇℃伅锛屽彲浠ユ垨鐣ャ
璁绬0=0;dx=0.01;1000镣广
#include <afxwin.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <Winuser.h>

#pragma comment (lib, "LIBCMT.LIB")

#define DEBUG 0

HWND hWndMain;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
void OnDisplayMessage(char *str);
void set_n_scale_y(int *ndiv, float ymin, float ymax, float *yu, float *yd, float *dy);
void set_n_scale_x(int *ndiv, float t0, float te, float *td, float *tu,float *draw_dt );
static float *yt,rx,ry,y_min,y_max,y_ran,y_shift;
static float draw_yu,draw_yd,draw_dy,draw_min,draw_max;
static float t0=0.0,dt=1.0,draw_tu,draw_td,draw_dt;
int flag_t0=0;
float bt_scale_1=1.0;
int draw_n=4,draw_nt=6;
char pname[40],namein[50],str[120],para2[10],para3[10],para4[10];;
char one_line[80];
int len,NN;
LPTSTR argv;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
MSG Msg;
int i;
//get cmd line
argv = GetCommandLine();
len = strlen(argv);
sprintf(one_line,"%s",argv);
i = sscanf(one_line,"%s %s %s %s %s",&pname[0],&namein[0],¶2[0],¶3[0],¶4[0]);
///===========
t0 = 0;
dt = 0.02;
draw_nt=6;
NN = 1000;
yt = (float *) malloc(NN * sizeof(float));
for (i=0;i<NN;i++) yt[i] = sin(t0+dt*i);

y_min=y_max=yt[0];
for (i=0;i<NN;i++){
if (yt[i] < y_min) y_min=yt[i];
if (yt[i] > y_max) y_max=yt[i];
};
y_ran = y_max - y_min;
ry = 150.0 / y_ran;
for (i=0;i<NN;i++) yt[i]= yt[i] - y_min;
y_shift = 180 ;
draw_max = y_max;
draw_min = y_min;
(void) set_n_scale_y(&draw_n, draw_min, draw_max, &draw_yu, &draw_yd, &draw_dy);

if (DEBUG == 1){
sprintf(str,"yd=%f yu=%f dy=%f y_max=%f y_min=%f n=%d", draw_yd,draw_yu,draw_dy,y_max,y_min,draw_n);
OnDisplayMessage(str);
};
(void) set_n_scale_x(&draw_nt, t0, t0+ dt*(NN), &draw_td, &draw_tu,&draw_dt);
if (DEBUG == 1){
sprintf(str,"td=%f tu=%f dt=%f n=%d", draw_td,draw_tu,draw_dt,draw_nt);
OnDisplayMessage(str);
};
rx = 900.0 / (draw_tu - draw_td);

if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;

ShowWindow(hWndMain,nCmdShow);
UpdateWindow(hWndMain);

while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static long nXChar,nYChar;
HDC hdc;
short x;
TEXTMETRIC tm;
PAINTSTRUCT ps;
COLORREF color;
HFONT font;
HPEN hP1; // pen
// CPoint aP,mousePos;
int i;

switch(message)
{
case WM_LBUTTONDOWN:
bt_scale_1 = bt_scale_1 + 0.05;
ry=ry*bt_scale_1;
y_shift = y_shift * bt_scale_1;
ShowWindow(hwnd, SW_HIDE);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
return 0;
case WM_RBUTTONDOWN:
ry=ry/bt_scale_1;
y_shift = y_shift / bt_scale_1;
ShowWindow(hwnd, SW_HIDE);
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
return 0;
case WM_CREATE:
ScrollWindow(hwnd, 0, -800, NULL, NULL);

hdc=GetDC(hwnd);
GetTextMetrics(hdc,&tm);
nXChar=tm.tmAveCharWidth;
nYChar=tm.tmHeight;
ReleaseDC(hwnd,hdc);
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps); // begin paint
SetWindowExtEx(hdc,1200,800,NULL);
SetViewportExtEx(hdc,1200,800*bt_scale_1,NULL);
SetViewportOrgEx(hdc,100,150,NULL);

// draw grids
color=RGB(0,128,128);
hP1=CreatePen(PS_SOLID,0,color);
SelectObject(hdc,hP1);

MoveToEx( hdc,0, y_shift-(draw_yu-y_min)*ry, NULL );
LineTo(hdc,900,y_shift-(draw_yu-y_min)*ry);
LineTo(hdc,900,y_shift-(draw_yd-y_min)*ry);
LineTo(hdc,0,y_shift-(draw_yd-y_min)*ry);
LineTo(hdc,0,y_shift-(draw_yu-y_min)*ry);

for (i=0;i<=draw_n;i++)
{
MoveToEx( hdc, 0, y_shift-(draw_yd -y_min + i* draw_dy)*ry, NULL );
LineTo( hdc, 900, y_shift-(draw_yd -y_min + i * draw_dy)*ry );
}

for (i=1;i<draw_nt;i++) {
MoveToEx( hdc, 900 * i /draw_nt, y_shift-(draw_yd -y_min)*ry, NULL );
LineTo( hdc, 900 * i /draw_nt, y_shift-(draw_yu -y_min)*ry );
}
// draw curve
color=RGB(255,0,0);
hP1=CreatePen(PS_SOLID,0,color);
SelectObject(hdc,hP1);

MoveToEx( hdc, (t0-draw_td)* rx, y_shift-yt[0]*ry, NULL );
for (i=1;i<NN ;i++){
LineTo(hdc,(t0+i*dt-draw_td)*rx, y_shift-yt[i]*ry);
}

font=CreateFont(
24,10,0,0, FW_NORMAL,0,0,0, ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,NULL,"myfont"
);
SelectObject(hdc,font);
GetTextMetrics(hdc,&tm);
nYChar=tm.tmHeight;
color=RGB(0,0,0);
for (i=0;i<=draw_n;i++)
{
sprintf(one_line,"%.2f",draw_yd +i * draw_dy);
TextOut(hdc,-60,y_shift-(draw_yd-y_min + i* draw_dy)*ry-5,one_line,strlen(one_line));
}

for (i=0;i<=draw_nt;i++)
{
sprintf(one_line,"%.1f",draw_td +i * draw_dt);
TextOut(hdc,900 * i /draw_nt-30,y_shift-(draw_yd -y_min)*ry+20, one_line,strlen(one_line));
}

sprintf(one_line,"%s N=%d",namein,NN);
TextOut(hdc,20,y_shift-(draw_yu-y_min )*ry-40,one_line,strlen(one_line));

EndPaint(hwnd,&ps); // end paint
return 0L;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd,message,wParam,lParam);

}

}

BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
// wndclass.hIcon=LoadIcon(NULL,"END");
wndclass.hIcon=LoadIcon(hInstance,"uni03.ico");
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName="Windows Fill";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
return(RegisterClass(&wndclass));
}

BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
char str[100];
sprintf(str,"%s %s",pname,namein);
hWnd=CreateWindow(
"Windows Fill",
str,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL
);
if(!hWnd)
return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}

void OnDisplayMessage(char *str)
{
MessageBox(NULL,str,"msg",MB_OK | MB_ICONINFORMATION);
}

void set_n_scale_y(int *ndiv, float ymin, float ymax, float *yu, float *yd, float *dy)
{
int n ;
float yuu,ydd;
float yr;
if (*ndiv <= 0) {n = 2;} else n = *ndiv;
yr = ymax - ymin;
if ( yr >= 0.0001 && yr < 0.001) {
yuu = (float) ((int) (ymax * 10000.0)) / 10000.0f + 0.0001f;
ydd = (float) ((int) (ymin * 10000.0)) / 10000.0f - 0.0001f;
}
else if (yr >= 0.001 && yr < 0.01) {
yuu = (float) ((int) (ymax * 1000.0)) / 1000.0f + 0.001f;
ydd = (float) ((int) (ymin * 1000.0)) / 1000.0f - 0.001f;
}
else if ( yr >= 0.01 && yr < 0.1) {
yuu = (float) ((int) (ymax * 100.0)) / 100.0f + 0.01f;
ydd = (float) ((int) (ymin * 100.0)) / 100.0f - 0.01f;
}
else if ( yr >= 0.1 && yr < 1.0) {
yuu = (float) ((int) (ymax * 10.0)) / 10.0f + 0.1f;
ydd = (float) ((int) (ymin * 10.0)) / 10.0f - 0.1f;
}
else if ( yr >= 1.0 && yr < 10.0) {
yuu = (float) ((int) (ymax)) + 1.0f;
ydd = (float) ((int) (ymin)) - 1.0f;
}
else if ( yr >= 10.0 && yr < 100.0) {
yuu = (float) ((int) (ymax * 0.1)) / 0.1f + 10.0f;
ydd = (float) ((int) (ymin * 0.1)) / 0.1f - 10.0f;
}
else if ( yr >= 100.0 && yr < 1000.0) {
yuu = (float) ((int) (ymax * 0.01)) / 0.01f + 100.0f;
ydd = (float) ((int) (ymin * 0.01)) / 0.01f - 100.0f;
}
else if ( yr >= 1000.0 && yr < 10000.0) {
yuu = (float) ((int) (ymax * 0.001)) / 0.001f + 1000.0f;
ydd = (float) ((int) (ymin * 0.001)) / 0.001f - 1000.0f;
}
else if ( yr >= 10000.0 && yr < 100000.0) {
yuu = (float) ((int) (ymax * 0.0001)) / 0.0001f + 10000.0f;
ydd = (float) ((int) (ymin * 0.0001)) / 0.0001f - 10000.0f;
} else {
yuu = ymax; ydd = ymin;
};

if (yuu == ydd) {
yuu = ydd * 1.1f;
ydd = ydd * 0.9f;
};
*yu = yuu; *yd = ydd;
*dy = (yuu - ydd) / n;
if (*dy > 1.0) *dy = (float) ((int) *dy );
*ndiv = (yuu - ydd)/ (*dy) ;
}

void set_n_scale_x(int *ndiv, float t0, float te, float *td, float *tu,float *draw_dt )
{
int i;
int n ;
double tr,dt,d;

if (*ndiv <= 0) {n = 6;} else n = *ndiv;
tr = (double) (te - t0);
dt = tr / (double) n;

if (dt >= 1.0 ){d = (double) ((int) (dt + 0.9));}
else { d = dt;};
i = (int)( (double) t0 / d);
if (t0 < 0) i=i-1;
// if ( (float)(d * i) < t0) i = i + 1;
*td = (float) (d * i);
*ndiv = (int) ((te - *td) / d);
if ( *ndiv * d < (te - *td) ) *ndiv= *ndiv+1;
*tu = *td + *ndiv * d;
*draw_dt = (float) d;
}

⑵ 简述虚拟仪器技术及LabVIEW编程课程的认识和理解

虚拟仪器--软件就是仪器
虚拟仪器, 虚拟示波器, 虚拟仪器技术, 虚拟仪器软件, 虚拟仪器开发, 虚拟仪器组成
一、引言
当前多媒体计算机、信息高速公路和计算机网络是计算机信息科学的三个重要发展方向。它们相互联系、相互促进、共同发展,已经渗透到人们日常工作、生活、学习、娱乐的各个方面,逐步地由办公室、实验室走向家庭。
虚拟现实是多媒体计算机的一个重要应用领域,多媒体技术是虚拟现实的技术基础。虚拟现实(Virtual Reality)是利用多媒体计算机技术生成的一个具有逼真的视觉、听觉、触觉及嗅觉的模拟现实环境。用户可以用人的自然技能对这一虚拟的现实进行交互体验,而用户体验到的结果--该虚拟现实的反应与用户在相应的真实现实中的体验结果相似或完全相同。虚拟现实的概念包括如下三个层次的含义:
1、虚拟现实是利用计算机技术而生成的逼真的实体,人们对该实体具有真实的三维视觉、立体听觉、质感的触觉和嗅觉。
2、人们可以通过自然技能与虚拟现实进行对话,即人的头、眼、四肢等的各种动作在虚拟现实中的反应具有真实感。
3、虚拟现实技术往往要借助一些三维传感设备来完成交互动作,如头盔式立体显示器、数据手套、数据衣服、三维操纵器等。
虚拟现实技术虽然现在还处于初级阶段,但已在科学可视化、CAD、飞行器/汽车/外科手术、虚拟仪器等的操作模拟等方面得到了应用。已经在航空航天、国防军事、生物医学、教育培训、娱乐游戏、旅游等领域显示出广阔的应用前景。
虚拟仪器(Virtual Instrument--VI)是虚拟现实在仪器仪表领域中的一个重要应用,目前已在国际上悄然兴起。虚拟仪器是以多媒体计算机作为基础,使用图形界面编程技术,模拟实际仪器的面板、功能和操作,从而生成完成各种任务的专用仪器。

由于科学技术的高度发展,导致了各种功能强大、越来越复杂的仪器不断涌现,其中很多仪器都以计算机作为基础,出现了仪器计算机化的趋势,其主要表现为:

1、硬件与计算机的接口标准化
2、硬件软件化
3、软件模块化
4、模块控件化
5、系统集成化
6、程序设计图形化
7、科学计算可视化
8、硬件接口软件驱动化

由于计算机软、硬件技术的不断发展,加之实际应用的需要,使人们对虚拟仪器的兴趣越来越浓厚,研制虚拟仪器也成为了现实的可能。研制虚拟仪器主要源于以下目的:

1、节省仪器开发的时间和经费
2、充分利用计算机数据处理和分析的功能
3、统一仪器的用户界面
4、增强仪器的功能和适用范围
5、集成仪器的需要
6、使仪器容易扩展

虚拟仪器主要由以下几部分组成:

1、界面控件库
2、数据输入、输出
3、数据处理方法库
4、数据表示库
5、数据存储与管理
6、任意信号发生
7、图形界面编程环境

界面控件库中包括一些常用仪器的面板部件,如指示器、计量表、发光二极管、按钮、转盘、刻度盘、滑动条等,每个控件都带有可编程的函数与属性。
数据输入与输出是指从外部设备获取数据进入计算机或从计算机输出数据去控制外部设备,需要建立与数据采集板、串并口、以及其他标准化接口(IEEE-488、GPIB、RS-232、RS-422、SCSI、VXI等)通信的驱动软件,从而扩展仪器的适用
范围与应用领域。
数据处理方法库中集中了许多数据处理方法,如FFT计算、滤波、建模、参数估计等,并提供这些处理方法的编程接口,只需把这些方法简单的组合即可完成各种复杂的任务。
数据表示是指用一定的方式来显示数据和处理结果,其中包括数字显示、曲线显示、直方图、散点图、二维图形、三维网格图形、三维填充图形、四维图形、图象乃至动态图形或图象等,使得数据表示十分直观,易于理解。
数据存储与管理主要是指提供数据存储的格式、数据查询方法、数据浏览方法等。
信号产生是指根据需要产生任意信号,其中一些标准信号可以用于仪器测试和自检之用。
图形编程环境是指用户可以任意组合控件与方法,将其联接成一个整体,形成专用仪器的工具。利用虚拟仪器用户可以象搭积木一样很快生成所需要的各种仪器。

二、现有虚拟仪器与集成环境举例

1、MATLAB:高性能数值计算和数据分析软件

MATLAB是由美国Mathworks公司研制的高性能数值计算和数据分析软件。它已经成为工程和科学研究的工业标准,它具有独特的用户交互界面、复杂的数值计算、强大的数据分析、灵活的科学图形、快速的计算、方便的扩展等特点,是高产和创造性科学研究的首选软件。
MATLAB的基本功能有:
※ 矩阵运算
※ 矩阵分解
※ 矩阵特征值与特征向量计算
※ 信号卷积
※ 谱估计
※ 复数运算
※ 一维和二维FFT
※ 滤波器设计与滤波
※ 曲线拟合
※ 三次样条拟合
※ 贝赛尔函数
※ 非线性优化
※ 线性方程组求解
※ 微分方程

MATLAB包括的工具箱有:

※ 数字信号处理工具箱
※ 控制系统设计工具箱
※ 系统辨识工具箱
※ 自扩展工具箱

MATLAB包括的绘图函数:

※ 直方图
※ 散点图
※ 曲线图
※ 三维网格图
※ 三维填充图
※ 等值线图
※ 极坐标图形
※ X-Y绘图
※ 图象显示

2、DADiSP:科学家和工程师的数据分析与图形软件

DADiSP软件由美国DSP Development Corporation公司研制,主要作为科学家和工程师用于数据分析和图形显示工具。它包括以下功能:

※ 矩阵运算
※ 特征向量与特征值计算
※ 一维、二维FFT与卷积
※ 二维、三维、四维图形显示
※ 医学图象处理
※ 卫星遥感图象处理
※ 地震信号处理
※ 统计分析与处理
※ 实验设计
※ 假设检验
※ 滤波器设计
※ 声纳雷达信号处理
※ 语音与通信信号处理
※ 振动分析

3、MP100:医学信号采集与处理系统

MP100是由美国BIOPAC System公司研制的医学信号采集与处理系统,它与AcqKnowledge软件一起运行,提供灵活的、易于使用的模块化系统,使您能随心所欲的完成数据采集和分析任务。AcqKnowledge是一个功能强大、十分灵活的软件包,它使用下拉式菜单和对话框,无需学习另外的编程语言,就可以设计出复杂的数据采集、模拟、触发和分析系统。主要包括实时数据记录、分析和滤波,离线数据分析与处理,数据的各种图形表示等功能。该系统可以与虚拟仪器LabVIEW联接,提供可视化图形编程环境。它的主要应用领域有:

※ 运动生理学
※ 肌电信号记录
※ 心信电记录与分析
※ 脑电记录与分析
※ 诱发电位记录与分析
※ 眼震电图和眼球运动分析
※ 神经传导分析
※ 精神生理学
※ 药理学
※ 遥测监护

4、LabVIEW:图形编程虚拟仪器

LabVIEW是美国National Instrument Corporation公司研制的图形编程虚拟仪器系统。主要包括数据采集、控制、数据分、数据表示等功能,它提供一种新颖的编程方法,即以图形方式组装软件模块,生成专用仪器。LabVIEW由面板、流程方框图、图标/连接器组成,其中面板是用户界面,流程方框图是虚拟仪器源代码,图标/连接器是调用接口(Calling Interface)。流程方框图包括输入/输出(I/O)部件、计算部件和子VI部件,它们用图标和数据流的连线表示;I/O部件直接与数据采集板、GPIB板、或其他外部物理仪器通信;计算部件完成数学或其他运算与操作;子VI部件调用其他虚拟仪器。

5、LabWINDOWS/CVI:C语言编程的虚拟仪器

LabWINDOWS的功能与LabVIEW相似,且由同一家公司研制,不同之处是它可用C语言对虚拟仪器进行编程。

6、LabLinc V:模块化的虚拟仪器系统

LabLinc V由美国COULBOURN INSTRUMENTS公司研制的模块化虚拟仪器系统,它由基本单元、信号采集与处理、控制等模块组成,主要应用于生理学、生物医学和生物力学等领域中的数据采集、实时显示和过程控制等。

7、HyperSignal:可视化信号处理系统设计

HyperSignal由美国Hyperception公司研制的可视化信号处理系统设计软件,它使信号处理系统设计的过程可视化,同时使信号处理结果可视化。

8、Model900:灵活的数据采集与波形产生系统

Model900由美国Applied Signal Technology公司研制,提供高速大容量数据采集、波形产生等功能,使用虚拟仪器环境以节省开发时间和资金。

9、DASP:大容量数据自动采集与处理分析软件

DASP由东方振动和噪声技术研究所研制,主要用于科学实验数据记录与分析,多功能信号采集与分析,自动化数据采集、显示、读数、计算、分析、存储、打印、绘图等。

10、LabDoc:集成仪器软件包

LabDoc由日本康泰克电子技术有限公司研制,它具有多种测量仪器功能,通过图形用户界面和在线帮助,能提供容易操作的仪器画面。可以应用于实验室、生产线检查、教育与培训等领域,主要测试功能有:

※ 数字滤波
※ 脉冲发生
※ 函数发生
※ 波形发生
※ 调谐信号发生
※ FFT分析
※ 频率计

以上我们列举了十种目前比较流行的虚拟仪器和集成环境系统,其中以美国在这方面的工作最为出色,而我国在这方面才刚刚起步,尚未见到完整的虚拟仪器系统。由以上列举的例子可以看出,虚拟仪器具备如下特点:

※ 涉及较深奥的数值计算方法
※ 集成了信号处理与过程控制算法
※ 软、硬件模块互相独立
※ 具备二次开发的集成编程环境
※ 是多学科交叉、渗透的产物

三、虚拟医学信号处理仪器

医学信号范围十分广泛,其中常见的医学信号有心电、脑电、诱发电位、肌电、眼电、胃电、神经脉冲电位、血压、脉搏波、呼吸波、温度等信号,它们特点各
不相同,有各自的频带、幅度范围、干扰来源等,因而使得医学信号处理变得十分复杂。
无论哪种医学信号仪器,几乎都涉及到信号放大、采集、分析、处理、滤波等共同的任务,同时不同的信号又具有各自特殊的处理方法,这些共同性和特异性的有机结合,形成集成环境是虚拟仪器的基础。
由于多参数临床监护和综合诊断的需要,医学信号的采集处理仪器呈现出集成化的趋势,人们从研制单一功能的医学信号仪器转向研制多功能集成化仪器,然而这种集成化并非单功能仪的堆积组合,而是从不同单功能仪器中找出共同点和不同点,形成软、硬件模块,将医学信号处理仪器计算机化,构成医学信号处理仪器开发环境,即虚拟仪器。
虚拟医学信号处理仪器是一个颇具具前景的领域,许多医疗仪器公司都看好这一市场前景,投入大量的人力、物力和财力来从事这方面的研究与开发,前面提到的MP100医学数据采集系统和LabLinc V模块化虚拟仪器就是其中的杰出代表。
虚拟医学信号处理仪是开发生产各种医学信号仪的工具。对于开发者而言,就可以象搭积木似的很快生成专用仪器,节省大量的开发时间和资金;对于用户而言,可以少花钱,多买仪器。虚拟医学信号处理仪器为集成化多功能仪器的开发奠定了基础,而且可以把最新研究成果尽快的应用到仪器中来。另外,虚拟医学信号处理仪器可以用于对未知信号和信号未知特性的研究,达到快出成果、多出成果的目的。实际上,虚拟医学信号处理仪器也对当前远程医疗、医学电子图书等热门研究领域将起到推波助澜的作用。

四、虚拟仪器相关技术

1、数值计算

在虚拟仪器中,需要提供灵活的数据处理方法,这些方法可根据实际需要由用户通过编程来实现,为了简化编程的复杂程度和节省大量的开发时间,在虚拟仪器中应当尽可能多的提供各种数值计算程序,这些数值计算主要有以下几大方面:

※ 矩阵运算(加、减、乘、逆、转置)
※ 特征值与特征向量计算
※ 矩阵分解
※ 一元、二元插值
※ 数值积分和微分
※ 线性代数方程求解
※ 非线性方程求解
※ 拟合与逼近
※ 特殊函数
※ 回归与统计

2、数字信号处理

在复杂的仪器中,数字信号处理占有重要的地位,因而在虚拟仪器中集成各种数字信号处理方法十分必要,数字信号处理方法可分为几大类:

※ 信号预处理
※ 滤波器设计与滤波
※ 经典谱估计
※ 现代谱估计
※ 相关与卷积
※ 离散变换
※ 数字特征计算
※ 常用信号发生
※ 信号建模
※ 数据压缩

3、计算机图形、图象学

图形和图象是复杂仪器中大量数据的直观表示,例如静态和动态脑电地形图,物体表面温度分布图,电磁场分布图等,它可把原本十分抽象的数据转换成人们易于理解的直观表示;另外,数据及其分析结果人们也习惯于用曲线、直方图、三维图形、等高线图等来表示。所以在虚拟仪器中,建立这些数据的图形、图象表示模块是十分必要的。

4、科学计算可视化

前面提到,复杂大量数据的图形、图象表示在虚拟仪器中十分重要,然而由数据到图形的映射并不是简单的事情,这就是近年来发展起来的科学计算可视化的研究课题。
科学计算可视化的根本目的是把由实验或数值计算获得的大量数据转换成人的视觉可以感受到的计算机图象。利用图象把大量抽象的数据有机的组织到一起,从而形象、生动地展示数据所表示的内容以及它们之间的相互关系,帮助人们直接把握复杂的全局,更好地发现和认识规律,摆脱复杂大量抽象数据的困惑。虚拟仪器中科学计算可视化的引入,将给人们展示出仪器的无限魅力,使仪器具备处理和分析大量复杂数据的能力。

5、面向对象的可视化编程

虚拟仪器是一个集成编程环境,用它人们可以很快地生成自己所需要的复杂仪器。所以虚拟仪器既要可编程又要操作简单,因而人们把面向对象的可视化图形编程技术引入到虚拟仪器中来。在虚拟仪器中集成了许多功能强大的部件,这些部件用直观的计算机图形表示,每个部件都有相应的可控属性、操作和函数,人们只需把这些部件在计算机屏幕上布置好,设置好相应的属性,以及它与其他部件的连接关系,即可生成构成相应功能的仪器。

五、小结

虚拟仪器是当前国内外刚刚起步的研究领域,许多高技术公司和研究所都看好这一市场应用前景,纷纷投入大量的人力、物力和财力,加紧开发与研究。虚拟仪器是多媒体计算机的一个重要应用领域,是多学科交叉、渗透的产物,其中浓缩了许多高、精、尖的科学技术。虚拟仪器不是仪器却高于仪器,它大大缩短了新型仪器的开发周期,节省了仪器开发的费用,它不仅是开发仪器的工具,而且也是进行科学研究的有力手段。虚拟仪器是仪器计算机化的产物,是集成化仪器的基础,是仪器行业的一场革命,它的研制与开发具有深远的意义。

⑶ delphi与彩票编程的问题 有追加分!!!!!!!!

朋友,想实现这些功能,任何一种通用语言都可以办到。甚至使用具有宏编程功能的一些办公软件也可以。

我建议你使用Delphi或VB。其开发工具可以使任何初学者都快速上手。并且在显示上可以优雅地实现。

另外,单就此软件而言,恐怕将不可避免地使用数据库。作为个人使用,可采用最简单的Access桌面数据库。

我想你的设计意图大概是,针对历史数据进行分析和汇总,并给出最接近中奖的一组数字。所以,除掌握开发语言外,你还必须对用于操作数据库的SQL语言有一定了解。

总结:学习Delphi,Access,SQL。此三种工具在书店有大量相关书籍可供购入。最好找以“Delphi数据库编程”为核心的书。其中将会提供翔实的例程。1.编程语言和操作系统:Visual c++ (vc) visual baseic vb visual foxpro delphi c++ builder powerbuider;vc.net vb.net;Asp.net java;Windows32 win95,win98,win2000,windows me,windows2000,windowsxp,windowNT/winnt; linux,PDA/windowsCE/smartphone手机/arm/ppc2000/ppc2002; pocket pc2002, ce.net;掌上电脑,嵌入式设备,移动设备;

2.控件及平台:二维绘图控件、2d/3D图形控件、三维图形控件、矢量图形控件、矢量绘图控件、图形中间件、图形插件、图形浏览控件,CAD插件、CAD控件、矢量控件、GIS控件、GIS图形控件,GIS插件,图形软件开发源码,测绘控件,视频CAD,图形算法库、几何算法库、winCE图形控件 PDA图形控件,源码、免费下载、软件试用、编程资源、矢量图形软件开发,算法源码,c++源码,SmartPhone,CAD软件开发,GIS软件开发,Linux图形平台,CAD自主平台,CAD开发平台,GIS开发平台,图形软件开发引擎,IE图形控件,几何算法控件;

3.文件格式解析、文件格式转换、图形文件浏览、BMP、GIF、ICO、TGA、PCX、WBMP、WMF、EMF,JPEG、PNG、MNG、TIFF、JBIG、PNM,PPM,PGM、RAS,DXF ,DWF(4.0-6.0)、DWG(2.5-2005) 、IGS, MIF,PLT,PRN,HPGL/HPGL2、DGN(8.0), SHP, IGSAT, PS/IGES, PS/STEP, PS/VDA-FS, PS/PRO ENGINEER, PS/ACIS, PS/BOBY SHOP,QCD,SHX字体、TTF字体、SHP字体,LIN,GBR,pat,AutoCAD字体线型,mdf,dwg浏览,SVG格式;dwg2005,dwgr14,autocad2005,r14,r15,r18,2006,,GERBER RS-274X

4.资源下载:SHX字体下载,TTF字体,SHP字体,图库下载,建筑图库,电气图库,园林图库下载,dwf2dxf.exe,dwg2dxf.exe,hpgl2cad.exe,askern.dll,asocx.ocx,depend.exe,winrar.exe,winzip.exe,zip,rar,mfc42.dll

5.算法总汇:求交算法,相切,裁减,直线、圆、弧、椭圆、样条曲线、函数曲线、曲面、三维消隐、面积算法、长度计算、体积计算;点云,不规则体、三角形、找最小区域、查找最大区域、路径查找、相量、向量、矢量、单位向量、矩阵、矩阵变换,交点、切点、圆心等、解析几何、线性代数,贝赛尔曲线算法;坐标变换;

6. 图形技术汇总:Unigraphics,pro/engineer,i-deas,pkpm,3ds,3dmax,mastercam9.0,dwfsdk toolkit,PRO/E,SOLiDWORKS,AUTOCAD,Intellicad,VisualCASE,SolidEdge,UG,caxa,MDA,catia,powercad,opengl,heidi,acis,ug,microstation,opendwg,opendgn,Freetype,OpenSceneGraph,brlcad,mapinfo,arcinfo,hoops,zlib,solidedge,mdt,gdi++,directX,directdraw,directshow,计算机图形学,OdDbDatabasePtr,DWGdirect使用;

7. PDM/MRPII/ERP/OA等行业:图形文件浏览、图档管理、审图、批注图纸、权限管理、web图档管理、xml/rml批注文件 兼容Volo View Express和AutoCAD格式;数字签名等;redline,rml红线批注文件,产品数据管理,电子图纸管理

热点内容
芯片写程序需要配置哪些文件 发布:2024-10-09 00:38:39 浏览:934
存储储存搬运 发布:2024-10-09 00:28:42 浏览:717
吃鸡电脑适合什么配置 发布:2024-10-09 00:18:24 浏览:228
java线程实例 发布:2024-10-09 00:05:34 浏览:193
文档放在安卓手机哪里 发布:2024-10-08 23:35:00 浏览:439
我的世界服务器拔刀强化 发布:2024-10-08 22:59:37 浏览:430
服务器换ip宝塔面板 发布:2024-10-08 22:58:56 浏览:433
如何通过服务器搭建网站 发布:2024-10-08 22:58:54 浏览:240
赛尔编程 发布:2024-10-08 22:30:12 浏览:164
威驰车有哪些配置 发布:2024-10-08 22:19:32 浏览:566