【问题标题】:How to unserialize user defined Java objects in Matlab that were serialized in java?如何在 Matlab 中反序列化在 java 中序列化的用户定义的 Java 对象?
【发布时间】:2011-04-28 09:01:28
【问题描述】:

我有一个用 Java 序列化自定义 Result 对象的模拟器。我想在 Matlab 中反序列化这些对象以进行进一步的统计分析。

这可能吗?

Result 对象中的数据是异构的。它包含另一个用户定义的类参数、整数和双精度的链表。

我将 classpath.txt 文件编辑到我的 java 包的根目录,并成功导入了 Result 和 Parameters。

但是,如果我尝试使用 load('filename'); 反序列化一个对象;我收到以下错误

>> load('Type3aa_simpleToCreate_no_com.2011-04-28
 00.05.29.experiment.data') ??? Error using ==> load Number of columns on
 line 1 of ASCII file
 C:\Thesis\code\Thesis
 v0.7\Results\Type3aa_simpleToCreate_no_com.2011-04-28
 00.05.29.experiment.data must be the same as previous lines.

【问题讨论】:

    标签: java serialization matlab object


    【解决方案1】:

    我对混合使用 Matlab 和 Java 不是很熟悉,但是用 Java 代码以外的其他东西解码使用 Java 序列化编码的东西似乎很困难。序列化将许多与特定的 Java 代码编译相关的注释混合到数据中。

    如果你想将数据读入 Matlab,我认为你最好以某种类似文本的格式写入数据。

    顺便说一句,序列化有许多问题,使得它很少使用,即使只是在 Java 内部也是如此。对特定版本的类文件的依赖是一回事,而另一个是众所周知的慢。我个人不会将它用于任何事情,但更喜欢发明自己的编码格式,无论是 text/xml 还是一些紧凑的二进制格式。

    更新:我对序列化缓慢的看法和经验是基于对开销容忍度非常低的应用程序,可能并不适用于所有人。

    【讨论】:

    • 您对序列化的 cmets 是可疑的。它在 1997 年可能会很慢,还有其他一切:当然不是现在,也从来没有“臭名昭著”这样。序列化被广泛使用,例如在 RMI 和 JMX 中; Web 服务器会话和托管 bean; ...
    • 感谢 cmets。我决定让 java 将变量写入我构建 Matlab 结构的文件。
    • 我对连载的cmets是基于个人经验的。我放弃了它,因此也放弃了 RMI,因为它在 2003 年左右变得非常缓慢,我的印象是它已在很大程度上被 HTTP 取代,成为通过网络交换消息的首选协议。但当然不是每个人都有相同的标准。
    猜你喜欢
    • 2017-08-02
    • 2021-04-22
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2010-10-19
    • 1970-01-01
    • 2014-11-25
    相关资源
    最近更新 更多