最近做一个项目,需要很多进行很多信号处理——小魏就是学软件的,对信号处理简直是个小白,最简单的实现就是傻瓜似的调用MATLAB的各种工具箱,达到目的就行。

同时,MATLAB是种解释性语言,执行效率比较低,不适用与通用编程平台,同时图形化编程也非常不方面,一举两得的是能在其他语言(VC++\Java)程序中调用MATLAB编写的函数。

好,牛刀小试,尝试在Java中调用MATLAB!

1)实验环境

机器中装有Eclipse和Matlab,并配置好环境变量。

小魏装的是Eclipse 3.7.1 和Matlab7.11.0 (R2010b)。当然要装有JDK,Eclipse的配置不多说了,网上有许多,至于Matlab,最好在classpath中添加:

%matlabInstallRoot%\R2010b\toolbox\javabuilder\jar\javabuilder.jar

这里说“最好”,是因为不添加,只在项目中引用,貌似也是可行的。

P.S. 如果是VC++中调用MATLAB,一定要在path中添加:

%matlabInstallRoot%\R2010b\bin\win32

2)将Matlab的m文件包装成java类

这里我们使用Matlab自带的例子,在路径

%matlabInstallRoot%\R2010b\toolbox\javabuilder\Examples\PlotExample

下,此处是m文件:

function drawplot(x, y)
plot(x, y); %%使用matlab函数plot()作图

在MATLAB中Command窗口中输入deploytool调出部署工具DeploymentTool。新建一个工程,输入工程名plotdemo.prj,选择路径,并选择Target为 Java Package。

在MATLAB右侧会出现我们新建的工程。

将刚刚编写的m文件直接拖拽进去,并重命名类名为plotter,点击Build编译:

完成之后(过程有点长~)就会在我们选择的路径下看到 plotdemo的文件夹。

3)在java工程中调用matlab生成的类

新建工程TryMatlabPlot,并右键在Build Path中引用相关的包

%matlabInstallRoot%\R2010b\toolbox\javabuilder\jar\jarbuilder.jar

以及刚刚生成的plotdemo\distrib\plotdemo.jar

Java类文件的代码为:

package lwei.test.matlab;
import com.mathworks.toolbox.javabuilder.*;
import plotdemo.*;
/***
* 通过调用matlab中的函数在窗口中作图
* @Author: lwei
*/
class createplot
{
public static void main(String[] args)
{
MWNumericArray x = null;   //存放x值的数组
MWNumericArray y = null;    //存放y值的数组
plotter thePlot = null;    //plotter类的实例
int n = 20;                //作图点数
try
{
//分配x、y的值
int[] dims = {1, n};
x = MWNumericArray.newInstance(dims,
MWClassID.DOUBLE, MWComplexity.REAL);
y = MWNumericArray.newInstance(dims,
MWClassID.DOUBLE, MWComplexity.REAL);
//定义  y = x^2
for (int i = 1; i <= n; i++)
{
x.set(i, i);
y.set(i, i*i);
}
//初始化plotter的对象
thePlot = new plotter();
//作图
thePlot.drawplot(x, y);
thePlot.waitForFigures();
}
catch (Exception e)
{
System.out.println("Exception: " + e.toString());
}
finally
{
//释放本地资源
MWArray.disposeArray(x);
MWArray.disposeArray(y);
if (thePlot != null)
thePlot.dispose();
}
}
}

运行程序,结果如图:

源码下载链接:http://download.csdn.net/detail/xiaowei_cqu/3877268

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)

【Matlab】Java中使用MATLAB作图相关推荐

  1. Java中使用MATLAB作图

    最近做一个项目,需要很多进行很多信号处理--小魏就是学软件的,对信号处理简直是个小白,最简单的实现就是傻瓜似的调用MATLAB的各种工具箱,达到目的就行. 同时,MATLAB是种解释性语言,执行效率比 ...

  2. java中调用matlab程序及相关问题

    **在java中调用matlab程序,首先要将matlab程序打包成jar文件,才可以被java程序所调用. 打包时本人所用的各种工具: 1:myeclipse-bule 2:java-1.7 3:m ...

  3. java 中调用 Matlab 的函数

    一.matlab版本必须支持java 在command 模式下面运行deploytool,如果支持该命令即可使用 二.matlab中function的书写 %定义一个函数operation(a,b), ...

  4. 在JAVA中调用MATLAB程序

    概述 先简单的介绍一下数据分析(百度百科:数据分析)与数据挖掘(百度百科:数据挖掘). 数据分析:使用适当的统计方法对收集来的大量数据进行分析,为了提取有用信息和形成结论而对数据加以详细研究和概括总结 ...

  5. 【Matlab】在Java中调用matlab函数

    考虑到计算的各种情况,有些用Java代码实现的计算难免会显得不够高效.而利用MATLAB写好相应的计算函数,然后打包成jar包供Java调用,在某些情况下会更加方便.现在就来说一下如何实现这一过程: ...

  6. matlab波导中电磁波,Matlab在电磁场与电磁波实验教学中之应用

    第 29卷 第 2期 2010年 2月 实 验 室 研 究 与 探 索 RESEARCH AND EXPLORATION IN LABORATORY Vol. 29 No. 2 Feb. 2010 M ...

  7. labview 嵌入matlab,labview中嵌入matlab

    MATLAB 脚本可以先在 MATLAB 下调试.无误后再导入到 MATLABSeript 节点中.MATLAB Script 节点对输入. 输出数据的类型有明确的要 求.只有 LabVIEW 中的数 ...

  8. matlab符号计算中提取,[matlab]符号表达式中的系数提取问题

    今天遇到一个问题: expr = x*y*z 如何将y*z作为一个整体,然后求出其的系数x 首先映入眼帘的是matlab中的coeffs函数 但是使用 coeffs(expr,y*z); 结果 Err ...

  9. matlab程序中for,matlab中的for循环

    以一个指定的次数重复执行语句 语法 for variable = expression statements end 描述 一般的格式是: for variable = expression stat ...

最新文章

  1. python的[:-1]和[::-1]用法及结果实例(取反、删除末尾字符串)
  2. visio从mysql导入_Visio 怎么从Excel、SQL、SharePoint和其他外部源导入数据?
  3. C语言程序100例之C#版-019
  4. Mysql8中降序索引的底层实现
  5. Flink 如何管理 Kafka 消费位点
  6. 高通平台SPI配置方法
  7. saltstack高效运维简介和部署,SaltStack 与 Ansible 如何选择?
  8. 发现贝叶斯的乐高积木
  9. 面向对象开发期末复习概述(四)
  10. php文字加边框,图片加特效文字 图片添加各种边框的文字效果 如果有多种边框模板就更好了...
  11. K路归并排序与败者树
  12. 基于逻辑回归的鸢尾花分类预测
  13. 用Arduino制作红外线循迹自动机器人
  14. Unity常用API
  15. CSDN Markdown 去除图片水印——最新方法
  16. Zabbix导入mysql监控模板_Zabbix MySQL监控模板添加
  17. IT项目管理小题计算总结【太原理工大学】
  18. 西门子s7 200smart与台达DTA温控modbus通讯
  19. Python Flask教程(一)
  20. 安卓系统的电视机_2020年电视机最强选购指南,含15款高性价比电视机集合大推荐(2020年7月份更新)...

热门文章

  1. python打印excel_Python利用openpyxl处理Excel文件(打印机及页面设置相关)
  2. SQL PLUS命令的使用大全
  3. 6种不同画法画平行线_[平行线的画法]平行线的画法
  4. 个人收藏的一些很有性价比的Github链接
  5. 4G 模块HTTP连接Web Server 提交数据到PHP
  6. ALT::CW2AEX无法访问private成员问题解决
  7. unity鼠标点击显示粒子特效
  8. Intellij IDEA Select Opened File 快捷键好像没起作用
  9. 科研、论文写作及修改
  10. 阿里云、腾讯云、UCloud和AWS的云主机测评