以matlab格式保存Python三维可变大小数组

时间:2016-06-22 13:52:52

标签: python arrays matlab numpy scipy

我正在尝试以matlab格式保存Python 3D int数组,其中第三维是可变长度的。我提出的解决方案是

array = np.empty((FirstDim, SecondDim), dtype = object)
for i in range(FirstDim):
    for j in range(SecondDim):
        array[i][j] = ...

scipy.io.savemat('array', {'array':array})

但问题是当我在matlab中访问数组变量时,它实际上只是存储为2D数组。

load array.mat
array(1,1,2)
error: A(I,J,...): index to dimension 3 out of bounds; value 2 out of bound 1

任何人都可以给我一些建议,以便我可以在matlab中访问数组,就像它是一个3D数组吗?谢谢!

1 个答案:

答案 0 :(得分:2)

因为您将3D数组保存为对象的2D数组(每个对象是一维数组),所以Matlab将其作为单元数组加载,其中每个单元格都是一维数组。您可以使用以下语法访问单元数组中的值:

array{1,1}(2)