MATLAB数据采集的时候,往往需要把得到的数据保存下来。
fid = fopen(文件名,‘打开方式’);
说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功。打开方式有如下选择:
‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。
‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。
‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。
‘a’:在打开的文件末端添加数据。文件不存在则创建。
‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。
另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
一、如果只是单纯的一个变量,可以像下面这样写。g2ggg是文件命名,txt文件(当然可以改成其他文件格式),这个是matlab自动保存在工作文件下的,baocun是我们要保存的变量。%d代表整数,、\r\n 代表每写入一次数据换行。
fid = fopen(\'g2ggg.xls\',\'a\'); fprintf(fid,\'%d \t \',baocun); fprintf(fid,\'\r\n\'); % 换行 fclose(fid);
其中:
fid = fopen(\'g2ggg.xls\',\'a\');
这句里面的‘a’代表后续写入。这样每次重新运行程序都不会替换之前保存的数据,还是保存在之前保存过的文件夹里面,接着之前的数据继续保存。
但是如果这个地方是‘w’,则代表写入,它写一次数据都会覆盖之前的数据,最后你会发现txt文件里面只保存了一个数据。除非你在程序中定义一个矩阵,把这些数据每次存在矩阵里面,到最后一次性保存这个矩阵,这些数据才会全部保存下来,但是切记你这次保存前的那个txt文件夹会被这次这个文件夹替换,除非你这次文件夹命名和上次不同。
二、如果是保存矩阵,可像下面这样写。save_data是文件命名,txt文件,这个是matlab自动保存在工作文件下的,baocun是我们要保存的矩阵。%d代表整数,、\r\n 代表每写入一次数据换行。
fid = fopen(\'save_data.txt\',\'a\'); [r,c]=size(baocun); for i=1:r for j=1:c fprintf(fid,\'%5f\t\',baocun(i,j)); end fprintf(fid,\'\r\n\'); end fclose(fid);
其中 :
fid = fopen(\'save_data.txt\',\'a\');
这句里面的‘a’代表后续写入。这样每次重新运行程序都不会替换之前保存的数据,还是保存在之前保存过的文件夹里面,接着之前的数据继续保存。
但是如果这个地方是‘w’,则代表写入,它每写一次数据都会覆盖之前的数据,最后你会发现txt文件里面只保存了一个数据。除非你在程序中定义一个矩阵,把这些矩阵每次存在定义的这个矩阵里面,到最后一次性保存这个矩阵,这些数据才会全部保存下来,但是切记你这次保存前的那个txt文件夹会被这次这个文件夹替换,除非你这次文件夹命名和上次不同。
三、前面两种情况都是matlab自动保存的工作路径下的,如果我们需要matlab自动保存在指定路径下怎么办呢?可以像下面这样写:
fid = fopen(\'C:\Users\Desktop\g2ggg.txt\',\'a\'); fprintf(fid,\'%d,%d,%d \r\n \',baocun);
其中
C:\Users\Desktop\
[FileName,PathName]=uiputfile({\'*.txt\',\'Txt Files(*.txt)\';\'*.xls\',\'Excel(*.xls)\';\'*.*\',\'All Files(*.*)\'},\'choose a File\'); %% pathname获取保存数据路径, filename获取保存数据名称 if ~FileName return; else str= [PathName,FileName]; fid = fopen(char(str), \'w\'); % 要想存的文件名是自己输入的,这个地方就得这样写 fwrite(fid, \'\', \'integer*4\'); [r,c]=size(baocun); % 得到矩阵的行数和列数 for i=1:r for j=1:c fprintf(fid,\'%d\t\',baocun(i,j)); end fprintf(fid,\'\r\n\'); end fclose(fid);
[FileName,PathName]=uiputfile({\'*.txt\',\'Txt Files(*.txt)\';\'*.xls\',\'Excel(*.xls)\';\'*.*\',\'All Files(*.*)\'},\'choose a File\'); %% pathname获取保存数据路径, filename获取保存数据名称 if ~FileName return; else str= [PathName,FileName]; fid = fopen(char(str), \'w\');
baocun={\'R\',\'G\',\'B\',\'Xdata\'};
这个是包含字符串的数组baocun,1 fid = fopen(\'save_data.txt\',\'a\'); 2 fwrite(fid, \'\', \'integer*4\'); 3 for n=1:4 4 fprintf(fid,\'%s\t\',char(baocun{n})); % \t表示空格 5 end 6 fprintf(fid,\'\r\n\'); %换行 7 fclose(fid);
很多东西都是举一反三,多动脑,多尝试,实在没办法就上网找答案,一般都能找到。
请发表评论