arrays - 包含结构数组的 MAT 文件的导入 [] - 仅导入第一个元素?

标签 arrays matlab import struct wolfram-mathematica

我正在尝试从已保存的 MATLAB 结构数组导入数据,但 Mathematica 似乎只导入第一个元素。

编程语言

blank = struct('x', [], 'y', [], 'z', []);
data = repmat(blank, 1, 10);

for i = 1:10
    data(i) = struct('x', i, 'y', i * 2, 'z', i * 3);
end

save('test.mat', 'data');

数学

In[76]:= Import["test.mat", "LabeledData"]
Out[76]= {"data" -> {"x" -> {{1.}}, "y" -> {{2.}}, "z" -> {{3.}}}}

有人知道为什么会这样吗?

作为临时修复,我只是求助于将多个结构存储在一个元胞数组中,即

data{i} = struct(...)

Mathematica 似乎能够处理得很好。

最佳答案

有一个与 MATLAB 接口(interface)的 Mathematica 包,可以从 MATLAB 传输结构。看这里:MATLink .

这是在 MATLink 中进行传输的方式:

Needs["MATLink`"]

MEvaluate["
 blank = struct('x', [], 'y', [], 'z', []);
 data = repmat(blank, 1, 10);

 for i = 1:10
     data(i) = struct('x', i, 'y', i * 2, 'z', i * 3);
 end"]

MGet["data"]

{{"x" -> 1., "y" -> 2., "z" -> 3.}, {"x" -> 2., "y" -> 4., 
  "z" -> 6.}, {"x" -> 3., "y" -> 6., "z" -> 9.}, {"x" -> 4., 
  "y" -> 8., "z" -> 12.}, {"x" -> 5., "y" -> 10., 
  "z" -> 15.}, {"x" -> 6., "y" -> 12., "z" -> 18.}, {"x" -> 7., 
  "y" -> 14., "z" -> 21.}, {"x" -> 8., "y" -> 16., 
  "z" -> 24.}, {"x" -> 9., "y" -> 18., "z" -> 27.}, {"x" -> 10., 
  "y" -> 20., "z" -> 30.}}

免责声明:我是 MATLink 开发人员之一。

关于arrays - 包含结构数组的 MAT 文件的导入 [] - 仅导入第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6567349/

相关文章:

excel - SAS:使用 PROC IMPORT 导入 .xlsx 时定义类型

c - 动态数组分配,按值传递,超出范围

arrays - 将数组的相似元素分组在一起,以便在 Perl 中立即在 foreach 中使用

java - 不同包导入错误

xml - 在 SQL Server 2008 中导入 XML 数据

c - matlab 上的旧 gcc 编译器

c++ - 调用堆栈上大量对象的构造函数

java - 我收到数组越界异常,但我不知道为什么会发生错误

matlab - 是否可以在 64 位机器上创建 32 位独立可执行文件?

c++ - 如何隐藏控制台窗口并调出启动画面?