利用MATLAB批量将.mat文件转为.txt文件

版权声明:本文为博主原创文章,若转载请附上原地址~ https://blog.csdn.net/sinat_27088253/article/details/81197300

因为需要将65536个.mat文件转为.txt文件,手工肯定是效率太低,需要另寻出路。
1. 开始搜索发现网上大部分都推荐的是使用save函数,介绍的思路如下:先把文件读入MATLAB 中,再用save进行保存 ,save(’printfile.txt’,’data’,’-ASCII’)写入到.txt文件中。但是在我实践中发现,会出错,报无法将数据保存为ASCII类型的错误。我的数据类型如下:
原始.mat数据
使用load读进来,然后再save(‘a.txt’,’tempABRDF’,’-ASCII’);就会出错,TXT文件中无法写入数据,显示数据无法转换为ASCII类型。
2. 因为给自己设定了计划,需要在昨天做完这个任务,所以又急急忙忙换了思路。改成用load函数和fprintf函数相结合的方法,一行一行的读进来,然后写到对应的TXT文件中去。(因为我最终要的TXT文件需要与之前的文件名一致,所以会多一些比较细节的操作)

%topFolder表示.mat文件的上层目录
%outputFolder表示最终输出TXT文件的上层目录

function flag = mat2txt(topFolder, outputFolder)
%获取所有的.mat文件
AllFile = strcat(topFolder,'\*.','mat');
files = dir(AllFile);
len =length(files);
for i = 1:len
    fileName = files(i).name;
    %载入相应的mat文件
    loadFile = load(strcat(topFolder,fileName));
    %创建输出的TXT文件,windows中如果想用‘\n’来表示换行,需要使用'wt'读写模式
    outputFile = fopen(strcat(outputFolder,strrep(fileName,'.mat',''),'.txt'),'wt');
    %向txt文件中写数据
    %dataVariable表示.mat文件中含有的字段名
    %由于字段不同数据格式可能不同,所以一次只支持一个字段,根据自己的需要进行修改
    [m,n] = size(loadFile.dataVariable);
    for j = 1:m
        for k =1:n
            fprintf(outputFile, '%d ',loadFile.dataVariable(j,k));
            end
        fprintf(outputFile,'\n');
    end
    flag = fclose(outputFile);
end
end

3.感受到做计划的重要性,因为为了完成计划,你会逼着自己去改变思路,不会走牛角尖导致效率低下。

参考资料:https://blog.csdn.net/sinat_20177327/article/details/77369618
https://ww2.mathworks.cn/matlabcentral/answers/84256-why-won-t-n-give-me-a-new-line

猜你喜欢

转载自blog.csdn.net/sinat_27088253/article/details/81197300