2014-06-23 2547 views

回答

3

假设网站上的.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

没有MatLab可以做到这一点吗?任何有助于此的工具? – ypriverol

1

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

只需将您的.mat文件加上load函数,然后用csvwrite写入!

+1

这个命令的名称有一个错字。我会编辑它,但更正需要至少6个字符。 :-) –

+0

@ CST-Link谢谢! –

0

我没有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文件内容作为单列(可能是顺序变量)以文本格式列出。应该很容易使用你的文本编辑器将这些数据按摩到原始的矩阵结构中,以便用在任何你喜欢的应用程序中。

0

有类似的问题。需要将具有两列数字数据的一系列.mat文件转换为标准数据文件(ascii文本)。请注意,我实际上并没有使用csv,但这里的所有内容都可以通过使用csvwrite而不是标准保存进行修改。

使用倍频4.2.1 ....

load myfile.mat 
LI = [L, I]   ## L and I are column vectors representing my data  
save myfile.txt LI 

注意L和我似乎是由八度在我的原始数据文件中的两个向量选择默认的变量名。理想情况下,一个脚本可以用所有文件迭代。在我的目录中扩展名将是理想的,但是这完成了工作。它将数据保存为两个空格分隔的数据列。

***更新

下面的脚本在八度4.2.1一系列数据文件与.MAT扩展,是在同一个目录。它将迭代它们并将数据写入具有相同名称但扩展名为.dat的文本文件。请注意,这样做效率不高,因此如果您有大量文件或者文件太大,则可能需要一段时间才能运行。我建议你从命令行使用octave mat2dat.m来运行它,这样你才能真正看到它。

我不保证这会适用于您,但它确实适合我。我也不擅长Octave或Matlab,所以我相信有更好的解决方案。

# 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