将.mat格式的数据集转换为.csv octave / matlab

时间:2014-06-23 08:50:07

标签: matlab csv

此网站中有.mat格式的数据集:http://www.cs.nyu.edu/~roweis/data.html
我想将格式更改为.csv。 有人可以告诉我如何更改格式以创建.csv文件。

谢谢!

4 个答案:

答案 0 :(得分:4)

假设网站上的.mat个文件已经可用。在Matlab的命令窗口中,您可以编写,例如:

load('C:\Users\YourUserName\Downloads\mnist_all.mat');

加载.mat文件;结果应该是在工作区中创建的一组矩阵test0test1,...,train0train1 ...,您希望将其另存为CSV文件。由于它们的大小不同,因此您需要为每个变量保存一个CSV,例如(也在命令窗口中):

csvwrite('C:\Users\YourUserName\Downloads\mnist_test0.csv', test0);

对每个变量重复执行该命令,并且不要忘记更改输出文件的名称以避免覆盖。

答案 1 :(得分:2)

您是否在Matlab中尝试过csvwrite函数?

只需使用load函数加载.mat文件,然后使用csvwrite编写它们!

答案 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}}