Matlab将.mat文件保存为.txt文件

  由于一开始没写mat2txt()的函数,手动转换发现工作量巨大,于是网上搜索了关于保存的方法,大家的方法各有不同,整理一下现总结如下:

1、使用save命令保存

  命令如下:

// filename.txt 为要保存的文件名,data 为工作区中的变量
save  filename.txt  data -ascii 

  先说这种方法的优点,就是简单!简单!当然,既然简单肯定有局限性,就是这种方法保存出来的 .txt 是不会换行的,变量 data 中的数据全部置于文本文件中,无法区分;若之前的变量 data 是一行数据,推荐这种方法, 若之前的变量 data 是n*m 的矩阵,则不推荐这种方法。另外,这种方法保存的数据,会自动以科学计数法保存,若原本数据是整数,看起来肯定不爽。

2、使用dlmwrite()函数保存

  命令如下:

dlmwrite('filename.txt',data);

  需要说明一下参数的意义,filename.txt 为需要保存的文件的名称,data 是需要保存的工作区中的数据。默认情况下,转换格式后的数据之间使用逗号隔开,我们可以通过参数更改,即使用关键字“delimiter”,下面是使用空格隔开的一个例子:

dlmwrite('filename.txt',data,'delimiter',' ');

  除此之外,还可以使用 precision 设置数据精度;使用 newline 设置行终止符,‘pc’表示使用回车换行符,‘unix’表示换行符。

  还是要说优缺点。这种方法依然是很简便的,但是它依然不能实现矩阵的转换,与使用 save 命令的保存没有太多不同。

3、使用自己编写的函数 mat2txt() 保存

  既然以上matlab自带函数无法实现我们想要的结果,于是自己编写一个函数实现该功能,代码如下:

//把矩阵 matrix 保存成任意后缀的文件
//转换成 .txt 举例:mat2txt( 'filename.txt', data );
//转换成 .corr 举例:mat2txt( 'filename.corr',data );

function back = mat2txt( file_Name, matrix ) 
fop = fopen( file_Name, 'wt' );
[M,N] = size(matrix);
for m = 1:M
    for n = 1:N
        fprintf( fop, ' %s', mat2str( matrix(m,n) ) );
    end
    fprintf(fop, '\n' );
end
back = fclose( fop ) ;

  该函数可以实现 .mat 到任意后缀格式文件的转换,前提是源数据为纯数据文件。

你可能感兴趣的:(Matlab,matlab)