首页 > 解决方案 > 序列化不同类型的 MATLAB 数据结构以发送到 Python

问题描述

我正在尝试在 MATLAB 中定义一个数据结构,该结构将包含不同数据类型的数据(类似于 C 中的结构),如下所示:uint8、uint32、uint8、uint32。然后我想做的是序列化这些数据,将其发送到 Python 脚本(例如通过 UDP)并在 Python 脚本中反序列化它们。任何人都可以建议一种简单的方法吗?

到目前为止,我尝试实现的方法是创建两个不同的数组,但我不太清楚如何从那里着手:

A=uint8([])
B=uint32([])
A(1) = 2;
B(1) = 222222;

标签: pythonmatlabserialization

解决方案


在 MATLAB 中,您可以使用 java 类。这开辟了很多可能性。

例如,您可以使用 Google 协议缓冲区。编写一个定义数据结构的模式。将其编译为 Java 和 Python 源代码。此源代码将定义代表您的数据结构的类,并且这些类将具有用于序列化和反序列化为 GPB 有线格式的方法。在 MATLAB 中使用 Java,在 Python 中使用 Python。

因此,您可以在 MATLAB 中对数据进行序列化,在 Python 中对其进行反序列化,而您所要做的就是编写 GPB 模式。

对于在 MATLAB 和 Python 之间实际移动数据,您可能会比查看 ZeroMQ 做得更糟。使用 UDP 或 TCP 套接字要容易得多,而且在 Java、Python 中也可用,可能还有 MATLAB 绑定。


推荐阅读