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



我有一个4维字典,我用Python脚本为我正在进行的数据挖掘项目制作,我想把数据读入Matlab,对数据进行一些统计测试。

读取二维矩阵是微不足道的。我想,由于我的第一个维度只有4个深度,我可以把它的每一个切片都写到一个单独的文件中(总共4个文件),每个文件都有许多二维切片,看起来像这样:

2 3 6
4 5 8
6 7 3
1 4 3
6 6 7
8 9 0

然而,这不起作用,matlab将其读取为单个连续的6 x 3矩阵。我甚至看了一眼dlmread,但不知道如何让它做我想做的事。我该如何格式化它,以便在一个文件中放入3个(最好是更多)维度?

一个简单的解决方案是创建一个只有两行的文件:第一行包含目标数组大小,第二行包含所有数据。然后,您所需要做的就是重塑数据。

假设您的文件是

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是如何对多维数组中的元素进行排序的。

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矩阵,这样您就可以保留正确的排序。

相关内容

  • 没有找到相关文章

最新更新