使用 Java 和 MATLAB 类型的数据转换
使用 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 数值类型兼容性 描述标量数值强制的类型兼容性。
MATLAB 到 Java 数值类型兼容性
| MATLAB 类型 | Java 类型 |
|---|---|
uint8 | short, int, long, float, double |
int8 | short, int, long, float, double |
uint16 | int, long, float, double |
int16 | int, long, float, double |
uint32 | long, float, double |
int32 | long, float, double |
uint64 | float, double |
int64 | float, double |
single | double |
double | byte, short, int, long, float |
Java 和 MATLAB 数据类型中的维度
在 MATLAB 中,维数是基本类型的属性,并且不会像在 Java 中那样增加类型的数量。
Java、double、double[] 和 double[][][] 是三种不同的数据类型。在 MATLAB 中,只有 double 数据类型,并且可能有一个标量实例、一个向量实例或一个多维实例。
| Java 签名 | 从 MATLAB 返回的值 |
|---|---|
double[][][] foo() | ones(1,2,3) |
维度强制转换
如何定义 MATLAB 函数和相应的 Java 方法签名决定了是否强制输出数据(使用填充或截断)。
此强制操作是自动为您执行的。本节介绍填充和截断遵循的规则。
空(零)维度
传递零维(0)数组(有时称为空)会导致 MATLAB 产生一个空矩阵。
| Java 签名 | 从 MATLAB 返回的值 |
|---|---|
double[] foo() | [] |
装箱类型
盒装类型用于封装不透明的 C 结构体。
如果在 Java 方法签名中使用盒装类型作为返回类型,则 Java 客户端将执行原始到盒装类型的转换。
| Java 签名 | 从 MATLAB 返回的值 |
|---|---|
Double foo() | 1.0 |
例如,以下方法签名可以互换使用:
double[] foo(); Double[] foo(); double[][][] foo(); Double[][][] foo();
Java 和 MATLAB 数据类型中的有符号类型和无符号类型
MATLAB 中的数字类包括有符号和无符号整数。Java 没有无符号类型。
