matlab对n维数据输入需要什么格式?

时间:2011-06-16 04:00:47

标签: file matlab input 3d matrix

我有一个用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个(或更多个)维度放在一个文件中?

2 个答案:

答案 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矩阵,你将保留正确的顺序。