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的更多相关文章

  1. 《Matlab实用案例》系列Matlab从入门到精通实用100例案例教程目录(持续更新)

    目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之<Matlab使用案例> 3. 专栏目录 [MATLAB统计分析与应用1 ...

  2. Matlab从入门到精通 Chapter5 数据可视化--

    5-1 图形绘制示例 >> x2=-17:0.02:3; >> y2=1./((x2+3).^2+1)+1./((x2+9).^2+4)+5; >> subplot ...

  3. 极简 Node.js 入门 - 3.2 文件读取

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  4. MATLAB中TXT数据文件读取并写入元胞数组的方法与步骤

    一. TXT数据文件读取 Data = load('train.txt');   %简单的文件读取,这时在工作区可以看到导入的大数据变量Data 二.大数据变量Data装入元胞数组中 D = cell ...

  5. MATLAB 文件读取(3)

    1.gps ,数值格式的读取 clear all test=importdata('2017- 9-27- 8-26-51.txt'); [r,c]=size(test.data);%row行,col ...

  6. (入门)matlab中创建和调用m文件

    大学学过的一款软件,说实话没好好学,老师直接讲到高深的做仿真之类的 综合网上的教程讲述基础的matlab创建遇到的问题: 参考: 1. https://blog.csdn.net/weixin_423 ...

  7. CUDA从入门到精通

    http://blog.csdn.net/augusdi/article/details/12833235 CUDA从入门到精通(零):写在前面 在老板的要求下.本博主从2012年上高性能计算课程開始 ...

  8. CUDA从入门到精通 - Augusdi的专栏 - 博客频道 - CSDN.NET

    http://blog.csdn.net/augusdi/article/details/12833235 CUDA从入门到精通 - Augusdi的专栏 - 博客频道 - CSDN.NET CUDA ...

  9. MyBatis从入门到精通(1):MyBatis入门

    作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中"趟了不少雷",所以有志于建立一个适合同样有热情学习Java技术的参考"排雷手册". 最近在 ...

随机推荐

  1. dos命令,jdk&jre&jvm的关系,classpath和path区别

    Day01_SHJavaTraing_4-2-2017 一.学习方法 1.独立思考 2.独立整理.总结知识点 3.整理Exception报错文档 4.莫钻牛角尖 5.敲代码,敲,猛敲,死里敲 6.写代 ...

  2. Django框架详解之views

    一个简单的视图 一个视图函数,是一个简单的python函数,它接受web请求并且返回web响应.无论视图本身包含什么逻辑,都要返回响应.为了将代码放在某处,约定是将视图放置在项目或应用程序目录中的名为 ...

  3. 我用windows live Writer 写个日志试试看

    我用windows live Writer 写个日志试试看. 哈哈 播放幻灯片 全部下载

  4. MobilNnet

    一.参数数量和理论计算量 1.定义 参数数量(params):关系到模型大小,单位通常为M,通常参数用 float32 表示,也就是每个参数占4个字节,所以模型大小是参数数量的 4 倍 理论计算量(F ...

  5. vue项目中,如何对static文件夹下的静态文件添加时间戳,以达到清除缓存

    例如config.js文件是存放在static文件夹下,里面存放的是websocket信息,需要经常改动.改动了以后由于缓存信息,使其不生效,因此需要对引入的文件添加时间戳. 最新方法: 注意转义符的 ...

  6. Django Rest Framework 简介及 初步使用

    使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...

  7. dfs序题集

    dfs序可以维护一个子树内的信息 需要记录dfs进的时间以及所有子树都遍历完的时间 void dfs(int u, int fa) { L[u] = ++id; for(int i = head[u] ...

  8. js解决跨域问题

    JavaScript中的常见解决跨域的方法 1. 通过jsonp跨域 1.)原生实现: 2. document.domain + iframe跨域 此方案仅限主域相同,子域不同的跨域应用场景. 1.) ...

  9. Lock-less and zero copy messaging scheme for telecommunication network applications

    A computer-implemented system and method for a lock-less, zero data copy messaging mechanism in a mu ...

  10. ASP.net session丢失

    ASP.NET Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进行状态控制,由于Session本身就是用来做 ...