此网站中有.mat格式的数据集:http://www.cs.nyu.edu/~roweis/data.html
我想将格式更改为.csv。
有人可以告诉我如何更改格式以创建.csv文件。
谢谢!
答案 0 :(得分:4)
假设网站上的.mat
个文件已经可用。在Matlab的命令窗口中,您可以编写,例如:
load('C:\Users\YourUserName\Downloads\mnist_all.mat');
加载.mat
文件;结果应该是在工作区中创建的一组矩阵test0
,test1
,...,train0
,train1
...,您希望将其另存为CSV文件。由于它们的大小不同,因此您需要为每个变量保存一个CSV,例如(也在命令窗口中):
csvwrite('C:\Users\YourUserName\Downloads\mnist_test0.csv', test0);
对每个变量重复执行该命令,并且不要忘记更改输出文件的名称以避免覆盖。
答案 1 :(得分:2)
答案 2 :(得分:1)
我没有Matlab许可证,所以我在Windows 10上安装了GNU Octave 4.2.1(2017)(感谢John W. Eaton和其他人)。我没有完全成功使用csvwrite所以我使用了以下解决方法。 (顺便说一句,我在Octave世界中完全不称职.csvwrite适用于简单的数据结构)。
在命令窗口中,我使用了以下两个命令
加载myfile.mat
保存( “ - 文本”, “myfile.txt的”, “VARIABLENAME”)
加载“myfile.mat”时,加载的数据向量的变量名称将显示在工作区窗口中。这是在save命令中使用的名称。一些.mat文件将加载多个数据结构。
“-text”选项是默认选项,因此您可能不需要在命令中包含此选项。
输出文件将.mat文件内容以文本格式列为单列(可能是顺序变量)。应该很容易使用文本编辑器将这些数据按到原始矩阵结构中,以便在您熟悉的任何应用程序中使用。
答案 3 :(得分:1)
有类似的问题。需要将具有两列数值数据的一系列.mat文件转换为标准数据文件(ascii文本)。请注意,我并没有真正使用过csv,但是这里的所有内容都可以通过使用csvwrite而不是标准保存进行调整。
使用Octave 4.2.1 ....
# mat2dat.m
dirlist = glob("*.mat")
for i=1:length(dirlist)
filename = dirlist{i,1}
load(filename, "L", "I")
LI = [L,I]
tmpname = filename(1:length(filename)-3)
txtname = strcat(tmpname, 'dat')
save(txtname, "LI")
end
请注意,L和I似乎是Octave为原始数据文件中的两列向量选择的默认变量名。理想情况下,迭代在我的目录中具有.mat扩展名的所有文件的脚本将是理想的,但这完成了工作。它将数据保存为两个空格分隔的数据列。
***更新
以下脚本适用于Octave 4.2.1,用于一系列具有.mat扩展名的数据文件,这些文件位于同一目录中。它将迭代它们并将数据写入具有相同名称但扩展名为.dat的文本文件中。请注意,这不是很有效,因此如果您有大量文件或者它们很大,则可能需要一段时间才能运行。我建议你使用{{1}}从命令行运行它,这样你就可以看到它了。
我不保证这对你有用,但它确实适合我。我也不熟悉Octave或Matlab,所以我确信存在更好的解决方案。
{{1}}