主要内容

使用MATLAB结构Java

MATLAB结构

MATLAB®结构包含数据并使用字段名引用它。每个字段可以包含任何类型的数据。MATLAB代码使用该形式的点符号访问结构中的数据structName.fieldName。该类的MATLAB结构是结构体

Java®com.mathworks.matlab.types.Struct类使您能够:

  • 创建一个结构体然后传递给MATLAB。

  • 创建MATLAB结构体并返回到Java。

com.mathworks.matlab.types.Struct类实现java.util.Map接口。属性的映射、键或值不能更改结构体返回自MATLAB。

通过结构体MATLAB函数

MATLAB函数设置MATLAB图形对象的属性。在一次调用中设置多个属性,使用MATLAB很方便结构体。定义这个结构体使用与要设置的属性名称匹配的字段名。字段引用的值是分配给属性的值。

这个示例代码执行以下步骤:

  • MATLAB开始。

  • 向MATLAB传递一个双数组情节函数。

  • 将MATLAB句柄对象返回给Java作为com.mathworks.matlab.types.HandleObject

  • 创建一个com.mathworks.matlab.types.Struct使用属性名和值。

  • 创建一个MATLAB图形并显示它5秒。

  • 通过HandleObject结构体到MATLAB函数使用函数宏指令。这个函数改变绘制数据的颜色和线宽。

  • 将情节导出到jpeg文件命名myPlot并关闭发动机连接。

进口com.mathworks.engine。*;进口com.mathworks.matlab.types。*;public class CreateStruct {public static void main(String[] args)抛出异常{MatlabEngine eng = MatlabEngine. startmatlab ();Double [] y = {1.0, 2.0, 3.0, 4.0, 5.0};HandleObject h = eng。函数宏指令(“阴谋”,y);eng.eval(“暂停(5)”);Double [] color = {1.0, 0.5, 0.7};Struct = new Struct("Color", Color, "LineWidth", 2);eng。Feval ("set", h, s); eng.eval("print('myPlot', '-djpeg')"); eng.close(); } }

Get Struct fromMATLAB

MATLAB函数为图形创建坐标轴并返回句柄对象引用。MATLAB得到函数,当用一个输出调用时,返回一个MATLAB结构体图形对象的属性。

这个示例代码:

  • 创建MATLAB图形对象并将对象句柄返回为HandleObject

  • 创建一个MATLAB结构,其中包含图形对象的属性和值,并将其作为结构体

  • 属性的值字体名属性中的结构体

  • 属性的值字体名键,它抛出一个Un金宝appsupportedOperationException因为结构体是无法改变的。

进口com.mathworks.engine。*;进口com.mathworks.matlab.types。*;公共类GetStruct{公共静态void main(String[] args)抛出异常{MatlabEngine eng = MatlabEngine. startmatlab ();HandleObject h = eng.feval("axes");Struct s = eng。函数宏指令("get", h); Object fontName = s.get("FontName"); System.out.println("The font name is " + fontName.toString()); try { s.put("FontName", "Times"); }catch(UnsupportedOperationException e){ e.printStackTrace(); } eng.close(); } }

相关的话题