Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16501592
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:25:56

下载本文示例代码
  前言  系统实现:从JAVA程序传递噪声标准差和两个数据给MATLAB,即给其实现具体的数据计算功能的DLL(通过VC 生成DLL),产生高斯分布的白噪声数据。其中VC需要MATLAB软件自带的"normrnd.m、rndcheck.m"两个文件和产生白噪声的文件"noise.m"。开发环境是:Window2000操作系统、VisualC 6.0和JBUILDER6.0开发工具、MATLAB6.5软件。  要实现JAVA、MATLAB通信必须解决两方面的问题:一是JAVA与VC 的通信;二是VC 与MATLAB的通信。  1 实现JAVA与VC通信方法简介  JAVA与VC的交互,可以通过各自单独运行的程序读写约定的格式的文件来完成,但是通信的实时性不能保证;可以利用CORBA机制,通过定义IDL接口的客户机/服务器(CLIENT/SERVER)的形式通讯;还可以通过JNI(Java Native Interface)或RMI(Remote Method Invocation)等方法实现。  在微软的操作系统上,实现本机程序的通信应用JNI机制较方便快捷、稳定可靠,并能实现实时通信。本示例系统的实现就使用了此机制。  1.1 实现JAVA与VC (DLL)互连  在JUBILDER6开发环境中,系统先生成NNSD的Project,其框架类名为Frame1。  系统为了使用VC实现的DLL,在Frame1.java文件中调用VC中函数处添加如下一些代码: public native void makeNoise(float m,int n);//实现调用的DLL中函数申明static{System.loadLibrary ("makenoise");//使用DLL文件,其名称是"makenoise.dll"}void jButton1_actionPerformed(ActionEvent e)//框架通过按钮消息实现DLL的调用{int n=160;//白噪声数据量float m=1.0;//白噪声方差平方makeNoise(m,n);//JAVA程序对DLL中函数的使用}  1.2 系统运行设置与编译  使用JBUILDER开发时,须对使用DLL中函数的JAVA文件编译属性进行设置。本系统在JBUILDER工具中的Project视图区域找到Frame1.java(各开发者确定的文件名可能不同)的文件,选中后按下鼠标右键,在出现的菜单中选择"Properties"项,接着将"Build->RMI/JNI->Generate JNI header file"找到的项目选定。最后编译该文件,可得相应的h文件。本系统产生"nnsd_Frame1.h",其中调用的函数为: JNIEXPORT void JNICALL Java_nnsd_Frame1_makeNoise(JNIEnv *, jobject, jfloat, jint);  如果仅使用SUN公司的JDK来实现,须用javah.exe将javac.exe生成的class文件去生成对应的h文件,之后并要修改h文件,即须将文件的包层次在调用的函数名上体现出来。  1.3 JAVA应用系统运行  将VC生成的DLL文件拷到JBUILDER运行程序的目录下,执行程序,就实现了JAVA系统和MATLAB的通信。本示例系统的DLL是"makenoise.dll",即下面介绍的方法所产生的。共2页。 1 2 :   前言  系统实现:从JAVA程序传递噪声标准差和两个数据给MATLAB,即给其实现具体的数据计算功能的DLL(通过VC 生成DLL),产生高斯分布的白噪声数据。其中VC需要MATLAB软件自带的"normrnd.m、rndcheck.m"两个文件和产生白噪声的文件"noise.m"。开发环境是:Window2000操作系统、VisualC 6.0和JBUILDER6.0开发工具、MATLAB6.5软件。  要实现JAVA、MATLAB通信必须解决两方面的问题:一是JAVA与VC 的通信;二是VC 与MATLAB的通信。  1 实现JAVA与VC通信方法简介  JAVA与VC的交互,可以通过各自单独运行的程序读写约定的格式的文件来完成,但是通信的实时性不能保证;可以利用CORBA机制,通过定义IDL接口的客户机/服务器(CLIENT/SERVER)的形式通讯;还可以通过JNI(Java Native Interface)或RMI(Remote Method Invocation)等方法实现。  在微软的操作系统上,实现本机程序的通信应用JNI机制较方便快捷、稳定可靠,并能实现实时通信。本示例系统的实现就使用了此机制。  1.1 实现JAVA与VC (DLL)互连  在JUBILDER6开发环境中,系统先生成NNSD的Project,其框架类名为Frame1。  系统为了使用VC实现的DLL,在Frame1.java文件中调用VC中函数处添加如下一些代码: public native void makeNoise(float m,int n);//实现调用的DLL中函数申明static{System.loadLibrary ("makenoise");//使用DLL文件,其名称是"makenoise.dll"}void jButton1_actionPerformed(ActionEvent e)//框架通过按钮消息实现DLL的调用{int n=160;//白噪声数据量float m=1.0;//白噪声方差平方makeNoise(m,n);//JAVA程序对DLL中函数的使用}  1.2 系统运行设置与编译  使用JBUILDER开发时,须对使用DLL中函数的JAVA文件编译属性进行设置。本系统在JBUILDER工具中的Project视图区域找到Frame1.java(各开发者确定的文件名可能不同)的文件,选中后按下鼠标右键,在出现的菜单中选择"Properties"项,接着将"Build->RMI/JNI->Generate JNI header file"找到的项目选定。最后编译该文件,可得相应的h文件。本系统产生"nnsd_Frame1.h",其中调用的函数为: JNIEXPORT void JNICALL Java_nnsd_Frame1_makeNoise(JNIEnv *, jobject, jfloat, jint);  如果仅使用SUN公司的JDK来实现,须用javah.exe将javac.exe生成的class文件去生成对应的h文件,之后并要修改h文件,即须将文件的包层次在调用的函数名上体现出来。  1.3 JAVA应用系统运行  将VC生成的DLL文件拷到JBUILDER运行程序的目录下,执行程序,就实现了JAVA系统和MATLAB的通信。本示例系统的DLL是"makenoise.dll",即下面介绍的方法所产生的。共2页。 1 2 : 下载本文示例代码


基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信基于VC实现Java和Matlab的通信
阅读(107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~