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

File 对于n维数据输入,matlab需要什么格式?,file,matlab,input,3d,matrix,File,Matlab,Input,3d,Matrix,我有一个用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,但不知道如何让它做我想要的。如何格式化该文件,以便

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

Matlab按列存储数据。因此,根据您的示例(假设其为3x2x3矩阵),matlab将其存储为第一个“切片”的第一、第二和第三列,然后是第二个切片的第一、第二和第三列,依此类推

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

所以你可以像这样从python中写出数据(我不知道怎么写),然后读入matlab。然后,您可以
将其重塑为一个3x2x3矩阵,并保留正确的顺序。

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

说你的档案是

3 2 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
要将数组读入变量
数据

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

查看
数据
,了解Matlab如何对多维数组中的元素进行排序

这就快到了。。。我现在知道如何这样做了,但这需要我手动计算出每个维度的深度(执行情况各不相同)。有没有办法将这些信息直接编码到输入文件中?您可能会将其写入一个带有头的自定义文件中,并在其中存储信息。一个简单的例子,在这种情况下,文件的第一行是3(对于3维),接下来的3行分别是3、2和3。因此,当你在matlab中阅读时,你先阅读第一行,然后再阅读下一行,有多少行。这将准确地告诉您有多少行/列/维度。在阅读完这些之后,您将一直阅读到文件的最后,然后使用此infoclose进行重塑,但我想没有雪茄:)非常好的解决方案,我衷心赞同。非常感谢你。