Matlab 从入门到精通 Chapter11 文件读取I/O
11.1 工作空间数据读取
将工作空间的变量保存为文件,可以使用save命令。
- save('filename') 将文件保存在当前目录下,文件名为filename.mat
 - save('filename','var1','var2',...)将工作空间内的指定变量保存在filename.mat中
 - save('filename',‘-struct','s') 将标量机构体的所有域保存到文件中
 - save(....,'format') 将文件保存为指定的文件格式,包括MAT,ASCII等格式。
 
>>a=12381 >> b=[2 34 212 4 3];
>> whos
Name Size Bytes Class Attributes a 1x1 8 double
b 1x5 40 double >> save('var_test.mat','a','b');

>>save('mydata','-regexp','^x')
>>s1.a=12.7;s1.b={'peking univ',[4 5;6 7]}; s1.c='good work';
>>save newstruct.mat -struct s1
>>dir
>>%查看文件
>>whos -file newstruct.mat
通过dir函数可以查看保存在当前目录下的文件
通过whos命令方式查看保存在文件中的数据
从一个指定的文件中读取变量,可以使用load命令
- load 加载matlab.mat中的所有变量
 - load filename 加载指定文件filename中的所有变量
 - load -mat filename 加载MAT格式的文件filename
 - S=load('arg1','arg2','arg3',...)使用MATLAB的函数格式来调用文件
 
>> whos -file var_test.mat
Name Size Bytes Class Attributes a 1x1 8 double
b 1x5 40 double >> load var_test
>> whos
Name Size Bytes Class Attributes a 1x1 8 double
b 1x5 40 double >> %保存文件
>> a=magic(4);b=ones(2,4)*-5.7;c=[8 6 4 2];
>> save >> load 正在从 matlab.mat 中加载 >> whos
Name Size Bytes Class Attributes a 4x4 128 double
b 2x4 64 double
c 1x4 32 double
11.3 底层文件读取I/O
| 
 函数类别  | 
 函数  | 
 说明  | 
| 
 打开或关闭文件  | 
 Fopen  | 
 打开文件fid=fopen(filename,mode)  | 
| 
 fclose  | 
 关闭文件status=fclose(fid)  | 
|
| 
 二进制文件读写  | 
 fread  | 
 读入二进制文件A=read(fid,count,precision)  | 
| 
 fwrite  | 
 写为二进制文件 [count errmsg]=fwrite(fid,format,size)  | 
|
| 
 格式化读写I/O  | 
 fscanf  | 
 写为二进制文件 [A,count]=fscanf(fid,format,size)  | 
| 
 fprintf  | 
 将格式化数据写入到文件中 count=fprintf(fid,format,A,...)  | 
|
| 
 fgetl  | 
 从文件中读取行,删除换行符号 [tline,count,msg]=fgetl(obj)  | 
|
| 
 fgets  | 
 从文件中读取行,保留换行符号 [tline,count,msg]=fgetl(obj)  | 
|
| 
 字符串转换  | 
 sprintf  | 
 将格式化数据写入字符串 [s,errmsg]=sprintf(format,A,...)  | 
| 
 sscanf  | 
 在格式控制下读取字符串 A=sscanf(s,format,size)  | 
|
| 
 文件定位  | 
 ferror  | 
 查询文件读取的状态信息 Message=ferror(fid)  | 
| 
 feof  | 
 检测文件读取是否到文件末尾 Eofstat=feof(fid)  | 
|
| 
 fseek  | 
 设定文件定位指针 Status=fseek(fid,offset,origin)  | 
|
| 
 ftell  | 
 获取文件定位的位置 Position=ftell(fid)  | 
|
| 
 frewind  | 
 将文件指针定位到文件开头 Frewind(fid)  | 
文件读取示例:
>> x=0:.1:1;
>> y=[x;exp(x)];
>> fid=fopen('exp.txt','wt');
>> fprintf(fid,'%6.2f%12.8f\n',y);
>> fclose(fid) >> fid=fopen('exp.txt','r');
>> a=fscanf(fid,"%g %g',[2 inf])
11.4 文件名称处理
fileparts函数可以实现对文件名称各部分的读取和分隔:
[pathstr,name,ext,versn]=fileparts('filename')
返回文件路径的各部分信息,如文件路径pathstr,文件名称name,文件扩展名,文件版本号(versn)
%创建完整的文件路径
f1=fullfile(matlabroot,'toolbox/matlab/general/Contents.m')
11.5 处理二进制文件
读取M文件:通过命令fread进行读取
%读取文件
[fid,message]=fopen('peaks.m','r+')
data=fread(fid)
读取文本文件
- A=fread(fid)
 - A=fread(fid,count) 读入count个数组元素
 - A=fread(fid,count,precision) 读入count个数组元素,指定精度
 
count的可选项
- n:n个元素
 - inf:读入整个文件中的内容
 - [m,n]:读入足够的数据填充m*n的矩阵
 
>>fid=fopen('dsd.txt','r')
>>c=fread(fid,5)'
>>fclose(fid)
写入文本文件
使用fwrite函数:
[count,errmsg]=fwrite(fid,A,precision):将矩阵A的数据写入到指定的文件中
[count,errmsg]=fwrite(fid,A,precision,skip):将矩阵A的数据写入到指定的文件中,skip跳过
>> fid=fopen('bins.txt','wb')
>> fwrite(fid,magic(5),'int32')
>> fclose(fid)
>> fid=fopen('bins.txt','r');
>> data=fread(fid,[5,5],'int32')
data =
17 24 1 8 15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
Matlab 从入门到精通 Chapter11 文件读取I/O的更多相关文章
- 《Matlab实用案例》系列Matlab从入门到精通实用100例案例教程目录(持续更新)
		
目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之<Matlab使用案例> 3. 专栏目录 [MATLAB统计分析与应用1 ...
 - Matlab从入门到精通 Chapter5 数据可视化--
		
5-1 图形绘制示例 >> x2=-17:0.02:3; >> y2=1./((x2+3).^2+1)+1./((x2+9).^2+4)+5; >> subplot ...
 - 极简 Node.js 入门 - 3.2 文件读取
		
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
 - MATLAB中TXT数据文件读取并写入元胞数组的方法与步骤
		
一. TXT数据文件读取 Data = load('train.txt'); %简单的文件读取,这时在工作区可以看到导入的大数据变量Data 二.大数据变量Data装入元胞数组中 D = cell ...
 - MATLAB 文件读取(3)
		
1.gps ,数值格式的读取 clear all test=importdata('2017- 9-27- 8-26-51.txt'); [r,c]=size(test.data);%row行,col ...
 - (入门)matlab中创建和调用m文件
		
大学学过的一款软件,说实话没好好学,老师直接讲到高深的做仿真之类的 综合网上的教程讲述基础的matlab创建遇到的问题: 参考: 1. https://blog.csdn.net/weixin_423 ...
 - CUDA从入门到精通
		
http://blog.csdn.net/augusdi/article/details/12833235 CUDA从入门到精通(零):写在前面 在老板的要求下.本博主从2012年上高性能计算课程開始 ...
 - CUDA从入门到精通 - Augusdi的专栏 - 博客频道 - CSDN.NET
		
http://blog.csdn.net/augusdi/article/details/12833235 CUDA从入门到精通 - Augusdi的专栏 - 博客频道 - CSDN.NET CUDA ...
 - MyBatis从入门到精通(1):MyBatis入门
		
作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中"趟了不少雷",所以有志于建立一个适合同样有热情学习Java技术的参考"排雷手册". 最近在 ...
 
随机推荐
- Java NIO(二)缓冲区
			
概念 缓冲区:一个用于特定基本数据类型的容器,由java.nio包定义的所有缓冲区都是Buffer抽象类的子类.其作用于与NIO的通道进行交互,数据从通道读入缓冲区,数据从缓冲区写入通道 Buffer ...
 - null和undifned的区别
			
null和undifned的区别 1 从类型方面:null的类型是对象,undified的类型是undified. 2 从定义方面:null是一个表示"无"的对象,转为数值时为0: ...
 - Android中onActivityResult()获取返回值
			
需求:从FirstActivity跳到SecondActivity,在SecondActivity中进行了操作并返回到FirstActivity. FirstActivity中的主要代码: priva ...
 - addFooterView(v)与  addHeaderView(v)之后     头或者尾部没有加上去
			
myExpandableListView.addHeaderView(headView); myExpandableListView.addFooterView(footerView); 原因很简单: ...
 - java处理日期时间代码
			
public static String FORMATE_DATE_STR = "yyyy-MM-dd"; public static String FORMATE_TIME_ST ...
 - codeforces 567 E. President and Roads  【 最短路 桥 】
			
给出一个有向图,从起点走到终点(必须走最短路),问一条边是否一定会被经过,如果不经过它,可以减小它的多少边权使得经过它(边权不能减少到0) 正反向建图,分别求出起点到每个点的最短距离,终点到每个点的最 ...
 - Client初见——python
			
from socket import *ip_port = ('127.0.0.1',8080)back_log = 5buffer_size = 1024tcp_client = socket(AF ...
 - Pyhton学习——Day26
			
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
 - MySQL-数据库安装及基本SQL语句
			
一数据库基本概念 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在 ...
 - Settings Django Static Files
			
静态文件是通过django.contrib.staticfiles来管理的. 配置Django静态文件,Djang官网静态文件配置介绍.简言之,通过以下三个步骤来配置和加载静态文件: 设置静态文件别名 ...