关于matlab向文件写入数据的方法——留着备用

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);

一般这样都是采集完成后由手工保存的,在这里保存的是矩阵,因为矩阵里面记录了之前每次的数据,所以采集完成后,一次性保存矩阵就可以保存所有数据了,一般这段代码在GUI里面添加按钮的回调函数里面。每次按下按钮就会弹出窗口让输入文件名以及选择保存路径。

这里增加了这段代码,又修改了一小部分代码,认真看就知道了。

[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);

很多东西都是举一反三,多动脑,多尝试,实在没办法就上网找答案,一般都能找到。

原文地址:https://www.cnblogs.com/6-6-8-8/p/9497044.html

时间: 2024-11-14 12:30:05

关于matlab向文件写入数据的方法——留着备用的相关文章

php操作XML,读取数据和写入数据的方法

xml文件 <?xml version="1.0" encoding="utf-8"?> <vip> <id>23</id> <username>开心的路飞</username> <sex>男</sex> <face>face/43.jpg</face> <email>[email protected]</email> &l

iOS 持续往文件写入数据。

持续往文件写入数据,不会覆盖之前写过的. NSFileHandle * fileHandle = [NSFileHandle fileHandleForWritingAtPath:fileDataPath]; if(fileHandle == nil) { return; } [fileHandle seekToEndOfFile]; [fileHandle writeData:data]; [fileHandle closeFile]; 原文地址:https://www.cnblogs.com

FileOutputStream---&gt;文件输出流(向文件写入数据)

Api介绍 定义 FileOutputStream 用于写入诸如图像数据之类的原始字节的流.要写入字符流,请考虑使用 FileWriter. 构造方法 FileOutputStream(File file) :创建一个向指定 File 对象表示的文件中写入数据的文件输出流. FileOutputStream(File file, boolean append) :创建一个向指定 File 对象表示的文件中写入数据的文件输出流. FileOutputStream(FileDescriptor fd

R读写Excel文件中数据的方法

用R语言读写Excel的方法有很多,但每种方法都有让人头疼的地方,比如xlsx包的代码复杂,只支持Excel2007:RODBC不易理解,限制太多,程序不稳定,会出各种怪毛病.另存为csv格式的方法倒是比较通用比较稳定,但又存在操作麻烦,无法程序化处理多个文件的问题.提取xml也是个办法,但步骤太多代码太复杂,令人望而生畏.用剪贴板转换也不好,这同样需要人工参与,还不如存为csv. 相比之下,用gdata包来读取,配合WriteXLS写入Excel则可以很好的避开上述麻烦.这两个包都支持Exce

PHP文件操作 之往一个文件写入数据

//打开一个文件 $f = fopen($filename,'wb'); $filename:打开一个文件,不存在则自动创建,如果不能创建,说明指定的文件目录有错误 wb:写入的方式 ---- 覆盖原内容ab:追加的方式 ---- 往文件尾部追加数据 if(!$f) { die("打开文件失败"); } else { echo '打开文件成功'."<br/>"; } //判断文件是否可写 if(!is_writable($f)) { die("

求大神给解决下,向已有的xml文件写入数据,但不覆盖文件存在的内容

============问题描述============ 需要向一个已经存在的xml文档写入数据.我使用的是XmlSerializer序列化的方式,将数据写入到xml文件中,但是写入数据的同时会覆盖掉文件本身存在的内容,而我想要的是将数据写入到xml文件,但原来的内容不会被覆盖.希望牛人给解决下,拜托了 ============解决方案1============ FileOutputStream(String path, boolean append),第二个参数就是设置是否添加到文件末尾,即不

java向Excel文件写入数据

/*使用之前要记得导入第三的jar包这个是我之前使用的时候那别人的东西自己修改了一下 还没来得及好好地封装一下还望见谅,注释我感觉写的挺清楚的就在不进行解释代码了*/ package com.zzp.ExcelParse; import jxl.Workbook;import jxl.format.*;import jxl.format.Alignment;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.

java.io,PrintWriter可以用来创建一个文件并向本文文件写入数据

PrintWriter(String filename); PrintWriter(File file);<!--创建一个向指定文件的新的PrintWriter--> PrintWriter(OutoutStream out); PrintWriter(OutoutStream out,Boolean antoflush);<!--创建一个中介输出流,创建一个向此输出流写入数据的新的PrintWriter--> PrintWriter(Writer out); PrintWrite

Python向excel中写入数据的方法 方法简单

最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 pip install xlwt ,如果电脑中安装过就不需要重复安装. 接下来就做一个简单的demo ,把三行数据添加到excel中. 具体代码如下: #!/usr/bin/env python # coding=utf-8 from xlwt import * #需要xlwt库的支持 #import