2011-04-28 83 views
0

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

这可能吗?

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

我编辑了classpath.txt文件到我的java包的根目录并导入了Result和Parameters两个成功。但是,如果我尝试用负载('文件名')反序列化一个对象,我收到以下错误

>> 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. 

回答

0

我没那么熟悉混合Matlab和Java的,但解码东西,这比Java代码别的东西使用Java串行编码似乎将是困难的。序列化将许多与Java代码的特定编译相关的注释混合到数据中。

我认为如果你想将它读入Matlab,你最好用一些类似文本的格式写数据。

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

更新:我对序列化缓慢的观点和经验基于对开销的容忍度很低的应用程序,可能并不适合所有人。

+0

你对序列化的评论是可疑的。它可能在1997年和其他所有事情一样缓慢:当然不是现在,从来没有“臭名昭着”如此。序列化被广泛使用,例如在RMI中,因此JMX; Web服务器会话和托管的bean; ... – EJP 2011-04-29 00:17:55

+0

感谢您的意见。我决定让java将变量写到一个文件中,从中我创建一个Matlab结构。 – Ruben 2011-04-29 16:26:37

+0

我对序列化的评论基于个人经验。我放弃了它,因此RMI也在2003年左右放慢了速度,我的印象是它已经在很大程度上被HTTP取代,成为通过网络交换消息的首选协议。但当然不是每个人都有相同的标准。 – njlarsson 2011-04-29 22:05:56