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=:r
for j=: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,

 fid = fopen('save_data.txt','a');
fwrite(fid, '', 'integer*4');
for n=:
fprintf(fid,'%s\t',char(baocun{n})); % \t表示空格
end
fprintf(fid,'\r\n'); %换行
fclose(fid);

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

 

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

  1. C#打开或者创建一个文件,然后向其末尾写入数据的方法

    原文:C#打开或者创建一个文件,然后向其末尾写入数据的方法             FileStream fs = new FileStream(@"d:\timetick.txt" ...

  2. 2、FileOutputStream--->文件输出流(向文件写入数据)

    Api介绍 定义 FileOutputStream 用于写入诸如图像数据之类的原始字节的流.要写入字符流,请考虑使用 FileWriter. 构造方法 FileOutputStream(File fi ...

  3. java向Excel文件写入数据

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

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

    //打开一个文件 $f = fopen($filename,'wb'); $filename:打开一个文件,不存在则自动创建,如果不能创建,说明指定的文件目录有错误 wb:写入的方式 ---- 覆盖原 ...

  5. fwrite文件写入数据

    文件的操作就两种:读和写 读:把文件中的内容读入到程序中,然后根据自己的项目需求把文件的数据进行相关的处理. 写:就是将程序中的数据,写入到文件中,去更新文件. 这么两种操作归到代码中就是这两种函数: ...

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

    最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 p ...

  7. java 读取Excel文件并数据持久化方法Demo

    import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...

  8. php逐行读取txt文件写入数组的方法

    使用说明: 采用fopen 方法,逐行读取数据,并使用feof($fp)  判断是否文件截止,最后通过filter() 方法,去除空白行,得到所需数据 $file = fopen("user ...

  9. C# 各种导入 Excel 文件的数据的方法总结

    在导入之前都需要将上传的文件保存到服务器,所以避免重复的写这些代码,先贴出上传文件并保存到服务器指定路径的代码. protected void btnImport_Click(object sende ...

随机推荐

  1. 处理Account locked due to 217 failed logins的问题

    处理Account locked due to 217 failed logins的问题 [root@xxx1 ~]# scp 123.txt root@IP地址:/root Account lock ...

  2. ARC与Toll-Free Bridging

    arc模块与mrc模块的沟通. 相当于程序的混编处理. Toll-Free Briding保证了在程序中,可以方便和谐的使用Core Foundation类型的对象和Objective-C类型的对象. ...

  3. kubernetes 认证授权

    每个Kubernetes集群都有一个集群根证书颁发机构(CA). 集群中的组件通常使用CA来验证API server的证书,由API服务器验证kubelet客户端证书等.为了支持这一点,CA证书包被分 ...

  4. Sequelize-nodejs-2-basic usage

    Basic usage基本使用 To get the ball rollin' you first have to create an instance of Sequelize. Use it th ...

  5. Python自动化之logging模块

    Logging模块构成 主要分为四个部分: Loggers:提供应用程序直接使用的接口 Handlers:将Loggers产生的日志传到指定位置 Filters:对输出日志进行过滤 Formatter ...

  6. empty与isset,null与undefined

    一. null VS undefined VS NaN 1. null 定义:null是特殊的object,是空对象,没有任何属性和方法. document.writeln(typeof null); ...

  7. idea 如何优雅的添加.ignore 忽略不必要提交的文件

    最近有点时间然后就跑去搜了下idea热门的插件,一不小心发现了一个.ignore插件.有过在idea使用git都知道.gitignore文件,而这个插件就是能优雅的帮我们做这件事. 首先先讲下安装这个 ...

  8. Spring源码分析(十四)从bean的实例中获取对象

    摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在getBean方法中,getObjectForBeanlnstance ...

  9. #leetcode刷题之路48-旋转图像

    给定一个 n × n 的二维矩阵表示一个图像.将图像顺时针旋转 90 度.说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像.示例 1:给定 matrix ...

  10. lightbox用法

    示例代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...