当前位置: 首页 > 面试题库 >

在Octave中导入Java类

陈昊昊
2023-03-14
问题内容

我一直很难弄清楚该怎么做。从八度的网站,似乎Java类是通过类路径中找到。此堆栈溢出答案指示“静态Java路径”是“动态Java路径”。但是我不确定如何设置静态java路径。

在我感兴趣的特定情况下,我试图将javaplex包与Octave一起使用-
我已经联系了Github上javaplex的作者,他们说如果Octave可以加载Java类,那么我可以使用它。据我所知,八度可以做到这一点。我的困难如下。

我使用的是为Matlab编写的代码,Octave和Matlab与Java交互方式的差异给我带来了麻烦。我必须将Octave设置为

C:\...\javaplex-master\javaplex-master\dist\matlab-examples-4.3.4\matlab_examples

在这里,我load_javaplex在命令窗口中运行命令“ ”,该窗口将运行脚本“ load_javaplex.m”。但是,在此脚本中的行

javaaddpath('./lib/javaplex.jar');

import edu.stanford.math.plex4.*;

其中“
edu.stanford.math.plex4.*”是一个Java类(本教程还建议显式运行第二行)。

我发现这在Octave中不起作用(至于Java接口,我不能只使用Matlab代码),因此我需要将其添加到我的Java类路径中才能访问它。但是我不知道如何在Octave中做到这一点。是否应该在标识静态类路径的目录中保存某种.txt文件?关于如何在Octave中加载Java类的任何常规信息?我在网上获取信息时遇到困难,无法确定如何执行此操作。将某些内容添加到类路径后该怎么办?


问题答案:

好消息是,将Java指令从matlab语法转换为八度语法非常容易。

坏消息是,您将不得不将matlab语法转换为八度语法。虽然这很简单,它意味着你可能必须寻找在提供M-文件的任何Java调用 ,以及
(在你自己的代码,而不是只)和适应的语法。(显然,您可能想出了一种自动完成该过程的好方法。)

这是使本教程在八度上工作的方式:

  • 下载matlab_exampleszip文件并按照说明解压缩(我在桌面上解压缩了文件夹,即在我的计算机上,这导致了该文件夹/home/tasos/Desktop/matlab_examples
  • 我打开八度并cd进入该目录
  • 打开load_javaplex.m文件并删除所有import语句,然后运行它以“初始化” javaplex。
  • 现在您已经准备好api.Plex4.createExplicitSimplexStream()按照教程BUT中的指示运行命令,首先需要注意两点:

    1. Octave无法提供从包中导入Java类的方法,因此,所有类调用都必须由包 完全 限定。即包的Plex4api实际上需要被完全限定为edu.stanford.math.plex4.api.Plex4。您可以通过打开.jar文件并浏览其文件夹结构来确认它是包Plex4的类api,它本身就是包的(子)包edu.stanford.math.plex4

    2. 在八度音阶中,创建Java对象,调用Java方法等的语法与在MATLAB中不同。有关详细信息,请参见八度音程手册中的相关页面。

因此api.Plex4.createExplicitSimplexStream(),旨在调用(不带参数)包中类的createExplicitSimplexStream方法的,将按八度调用,如下所示:Plex4``edu.stanford.math.plex4.api

javaMethod( 'createExplicitSimplexStream', 'edu.stanford.math.plex4.api.Plex4')

然后将其输出为教程中描述的答案。

说了这么多,请注意,虽然您不能import直接对类或(子)包进行保存,以免您一直不得不重写长的包字符串,但是octave的java接口似乎 确实非常
依赖字符串,这意味着相当简单将如此长的字符串存储为变量,并在必须访问类时重用它们。因此,例如,您可以将字符串保存'edu.stanford.math.plex4.'到一个名为的变量中,plex4而只需javaMethod('createExplicitSimplexStream', [plex4, 'api.Plex4'])在您的代码中调用,等等,这使得它的麻烦程度 有所 减轻。

玩得开心。



 类似资料:
  • Install Refer https://www.gnu.org/software/octave/. Ubuntu: apt-get install octave gnuplot Max OSX: brew tap homebrew/science && brew update && brew upgrade && brew install octave Basic operations Nor

  • Octave 是一个类似matlab和Scilab的数学软件包,可以进行各种运算,编程。它还有丰富的C++接口可以让用户编程时调用。它绘图使用gnuplot。 Octave的使用也是基于字符终端模式的,当需要绘图时,将会调用Gnuplot进行数据绘图,并显示出来。 Octave是用C++编写的,它内容丰富的库也可以供用户在编写软件时调用。Octave库的详细介绍在/usr/share/doc/oc

  • 问题内容: 我是一个完整的JSP初学者。我正在尝试在JSP页面中使用。使用除in中的类以外的其他类,我需要做什么? 问题答案: 使用以下导入语句导入: 顺便说一句,要导入多个类,请使用以下格式:

  • GNU Octave是一种高级编程语言,如MATLAB,它主要与MATLAB兼容。 它也用于数值计算。 Octave与MATLAB具有以下共同特征 - 矩阵是基本数据类型 它内置了对复杂数字的支持 它有内置的数学函数和库 它支持用户定义的功能 GNU Octave也是可自由再发行的软件。 您可以根据自由软件基金会发布的GNU通用公共许可证(GPL)的条款重新分发和/或修改它。 MATLAB与Oct

  • MATLAB / Octave These repository is a collection of useful algorithms and data structures built in MATLAB/Octave. In addition you will find solutions from project euler problem sets. The code in this

  • GUI Octave是GNU Octave的一个图形用户接口,支持Windows 95/98/ME/NT/2000/XP/Vista/7。 GUI Octave + GNU Octave是一个完美替代Matlab的方案。