Matlab 从入门到精通 Chapter11 文件读取I/O

news/2024/7/7 12:01:13

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

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Ann21/p/9316609.html


http://www.niftyadmin.cn/n/2745307.html

相关文章

你都不知道自己有多强,衡量程序员生产力的标准是什么?

如果你用谷歌搜索“mearsuring software developer productivity”,那么你会发现出来的全都是一些废话,一点用处都没有的废话。——Nick Hodges,《Measuring Developer Productivity》 所以现在你知道了吧,原来我们并没有办法来衡…

留学目的地选择之伊利诺伊州

留学目的地选择之伊利诺伊州 美国大学奖学金专家介绍到伊利诺伊州(Illinois)位于美国中西部,北接威斯康星州,东北濒密歇根湖,东界印第安纳州,东南邻肯塔基州,西隔密西西比河与密苏里州和艾奥瓦州相望。面积14.6万平方公…

国外Python黑客技术,诱骗玩的真好,Dnspwn攻击实战教程!

原理 记得有个大佬说过,百分之八十的黑客工具都是用Python实现。此黑客攻击首先利用"airpwn"工具创建了目标HTTP,接着对DNS进行攻击。 这种攻击的思想非常简单: 假如在一个开放的WLAN上有两个人:Bob和Eve。E想让B访问她…

创建Android开发环境

创建Android开发环境以前首先要做到是下载必需对软件包: 1.JDK 1.6 2. Android sdk 3.Elipse 在下载这些安装包后,首先安装jdk。安装成功后要配置环境变量才可以使用,配置步骤如下: 1.选择”系统属性”》高级》环境变量&…

C指针声明解读之左右法则

2019独角兽企业重金招聘Python工程师标准>>> C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的…

jQuery实现网页右下角弹出广告

其实很简单:css定位层一直在右下角,用js控制层的高度增减。 代码: View Code 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"ht…

面试 10:玩转 Java 选择排序和插入排序

面试 10&#xff1a;Java 玩转选择排序和插入排序 昨天给大家讲解了 Java 玩转冒泡排序&#xff0c;大家一定觉得并没有什么难度吧&#xff0c;不知道大佬们玩转了吗&#xff1f;不知道大家有没有多加思考&#xff0c;实际上在我们最后的一种思路上&#xff0c;还可以再继续改进…

3.1 信号在网线和集线器中传输

1、前言信号从网卡里面出来之后&#xff0c;首先会通过RJ45进入双绞线&#xff0c;然后沿着双绞线进入集线器。先整体看下本章讲的主要部分&#xff1a;2、为什么要使用双绞线&#xff1f;PHY&#xff08;MAU&#xff09;模块。这个模块在每个网卡中都存在&#xff0c;作用&…