我有一个用Python脚本制作的4维字典,用于我正在处理的数据挖掘项目,我想将数据读入Matlab,对数据进行一些统计测试。
读取二维矩阵是微不足道的。我认为,由于我的第一个维度只有4个深度,我可以将每个切片写入一个单独的文件(总共4个文件),每个文件都有许多2维切片,看起来像这样:
2 3 6
4 5 8
6 7 3
1 4 3
6 6 7
8 9 0
然而,这不起作用,并且matlab将其读作单个连续的6×3矩阵。我甚至看了一眼dlmread,但无法弄清楚如何让它做我想要的。如何格式化,以便将3个(或更多个)维度放在一个文件中?
答案 0 :(得分:7)
一个简单的解决方案是创建一个仅包含两行的文件:第一行包含目标数组大小,第二行包含所有数据。然后,您需要做的就是重塑数据。
说你的文件是
3 2 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
您可以执行以下操作将数组读入变量data
fid = fopen('myFile'); %# open the file (don't forget the extension)
arraySize = str2num(fgetl(fid)); %# read the first line, convert to numbers
data = str2num(fgetl(fid)); %# read the second line
data = reshape(data,arraySize); %# reshape the data
fclose(fid); %# close the file
查看data
以了解Matlab如何在多维数组中对元素进行排序。
答案 1 :(得分:2)
Matlab按列存储数据。因此,从您的示例(假设它是一个3x2x3矩阵),matlab将它存储为第一个“切片”的第一,第二和第三列,然后是第二个切片的第一个,第二个第三列,依此类推如此
2
4
3
5
6
8
6
1
7
4
3
3
6
8
6
9
7
0
所以你可以从python中写出这样的数据(我不知道怎么做),然后把它读成matlab。然后你可以reshape
将它重新变成一个3x2x3矩阵,你将保留正确的顺序。