在封装Matlab函数时,在Java中编码一个“结构”的例子?

2次浏览(过去30天)
我正在着手编写Java包装 intlinprog ,同时学习Java。我的面向对象编程经验是2004年左右的c++,所以阅读Java代码习惯用法、模式、Matlab数据转换和编程是一个有趣的学习曲线 封装过程本身,以及Java编译/调用
intlinprog 需要一个 结构体 参数命名 选项 有一个例子如何在Java中编写MATLAB结构吗? 根据 Java与MATLAB数据转换规则 结构数组是作为MWArray数组构造和访问的。 Java/Matlab互操作的大多数示例使用派生自 MWArray
我在用 Matlab编译器SDK 而不是Matlab引擎,所以我假设Java类 com.mathworks.matlab.types.Struct 不适用。如果我错了,欢迎指正。

接受的答案

托德·弗拉纳根
托德·弗拉纳根 2020年10月29日
编辑:托德·弗拉纳根 2020年10月29日
学习如何在Java API中创建结构体的最简单方法是添加 库编译器中的一个示例 带有示例结构和示例数据的工具。这将生成Java代码,向您展示如何对自己的数据使用结构api。
这里有一个例子:
A.i1 = 1.0
a.i2 =“字符串”
foo ()
和生成的Java方法:
公共fooExample() {
MWStructArrayaIn = null
MWArrayaIn_i1_1 = null
MWArrayaIn_i2_1 = null
对象[]results = null;
试一试
//实例化aIn结构中的数据
double aIn_i1_1Data = 1.0;
aIn_i1_1 = new MWNumericArray(aIn_i1_1Data, mwclass . double);
字符串aIn_i2_1Data =“字符串”
aIn_i2_1 = new MWCharArray(aIn_i2_1 data);
//实例化结构aIn并设置内部数据
int[] aInDims = {1,1};
字符串[]aInFields = {“i1”“i2”};
aIn = new MWStructArray(aInDims, aInFields);
aIn.set (“i1”, 1, aIn_i1_1);
aIn.set (“i2”, 1, aIn_i2_1);
results = class1Instance.foo(aIn);
(例外e) {
e.printStackTrace ();
}最后
//处理本机资源
MWArray.disposeArray (aIn);
MWArray.disposeArray (aIn_i1_1);
MWArray.disposeArray (aIn_i2_1);
MWArray.disposeArray(结果);

更多答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!