主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用 JavaMATLAB 类型的数据转换

使用 MATLAB 数据类型

在 MATLAB® 中您可以使用多种数据类型。这些数据类型都采用矩阵或数组的形式。您可以构建浮点和整数数据、字符和字符串以及逻辑真和假状态的矩阵和数组。结构和元胞数组提供了一种在同一数组中存储不同类型数据的方法。

所有基本 MATLAB 类均在图基本 MATLAB 数据类型中圈出。

Java® 客户端遵循 Java-MATLAB-Interface (JMI) 数据编组规则。它扩展了标量 Java 装箱类型的规则,允许自动装箱和拆箱,而 JMI 不支持这一点。

注意

MATLAB Production Server™ 不支持函数句柄。

基本 MATLAB 数据类型

Java 到 MATLAB 类型的预期转换结果在 Java 类型到 MATLAB 类型的转换 中列出。MATLAB 到 Java 类型的预期转换结果在 MATLAB 类型到 Java 类型的转换 中列出。

标量数值类型强制

只要没有数据或精度丢失,标量数值 MATLAB 类型就可以分配给多个 Java 数值类型。

该规则的主要例外是 MATLAB double 标量数据可以映射到任何 Java 数值类型。因为 double 是 MATLAB 中的默认数值类型,所以此例外为 MATLAB Production Server Java 客户端 API 的用户提供了更多的灵活性。

MATLAB 到 Java 数值类型兼容性 描述标量数值强制的类型兼容性。

MATLABJava 数值类型兼容性

MATLAB 类型Java 类型
uint8short, int, long, float, double
int8short, int, long, float, double
uint16int, long, float, double
int16int, long, float, double
uint32long, float, double
int32long, float, double
uint64float, double
int64float, double
singledouble
doublebyte, short, int, long, float

JavaMATLAB 数据类型中的维度

在 MATLAB 中,维数是基本类型的属性,并且不会像在 Java 中那样增加类型的数量。

Java、doubledouble[]double[][][] 是三种不同的数据类型。在 MATLAB 中,只有 double 数据类型,并且可能有一个标量实例、一个向量实例或一个多维实例。

Java 签名从 MATLAB 返回的值
double[][][] foo() ones(1,2,3)

维度强制转换

如何定义 MATLAB 函数和相应的 Java 方法签名决定了是否强制输出数据(使用填充或截断)。

此强制操作是自动为您执行的。本节介绍填充和截断遵循的规则。

 填充

 截断

空(零)维度

传递零维(0)数组(有时称为)会导致 MATLAB 产生一个空矩阵。

Java 签名从 MATLAB 返回的值
double[] foo() []

 Java 空值传递给 MATLAB

 MATLAB 空值传递给 Java

装箱类型

盒装类型用于封装不透明的 C 结构体。

如果在 Java 方法签名中使用盒装类型作为返回类型,则 Java 客户端将执行原始到盒装类型的转换。

Java 签名从 MATLAB 返回的值
Double foo()1.0

例如,以下方法签名可以互换使用:

double[] foo();         Double[] foo();
double[][][] foo();     Double[][][] foo();

JavaMATLAB 数据类型中的有符号类型和无符号类型

MATLAB 中的数字类包括有符号和无符号整数。Java 没有无符号类型。