由于一开始没写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 到任意后缀格式文件的转换,前提是源数据为纯数据文件。