6.1.3 fscanf函数读出数据

调用方式

A = fscanf(fid, format)

[A,count] = fscanf(fid, format, size)

输入参数

fid 同上

format 同上

size 决定读取多少数据其内容如下。

n表示将n个元素读入一个向量

inf读取到文件结尾,结果是一个向量

[m,n]读取的元素填满m行n列矩阵

输出参数

A 数据变量

count 读取值的个数

下面读出exp.txt文件。

>> fid = fopen('exp.txt',

'r'); % 'r'表示读取文件操作

>> a = fscanf(fid, '%g %g', [2

inf]);

>>fclose(fid)

>> a = a'

>> a

a =

0 1.0000

0.1000 1.1052

0.2000 1.2214

0.3000 1.3499

0.4000 1.4918

0.5000 1.6487

0.6000 1.8221

0.7000 2.0138

0.8000 2.2255

0.9000 2.4596

1.0000 2.7183

6.1.4 从文本文件中读入格式化数据

1.textread函数读取文本文件

MATLAB从文本文件中读取格式化的数据函数是textread。

调用方式

[A,B,C,...] = textread('filename','format')

[A,B,C,...] = textread('filename','format',N)

[...] = textread(...,'param','value',...)

输入参数

'filename' 需要读取的数据文件

'format' 每行各个数据格式

N 读取数据时使用N次。

当调用textread函数时会按照指定的格式从'filename'中读取数据,并将数据分别保存在变量A,B,C中,直到文件内容被读完为止。

下面是读取c:\中的test3.txt文件操作。

>> !type c:\test3.txt

Q1 1 2

Q2 3 4

>> [a1 a2

a3]=textread('c:\test3.txt','%s %f %f')

a1 =

'Q1'

'Q2'

a2 =

1

3

a3 =

2

4

这样文件test3.txt中的每行分别读入变量a1、a2、a3。

2.TextScan函数读取文本数据

对于具有多行文字说明文本数据文件,最好的办法则是用textscan,或者fscanf读取。

调用方式

C = textscan(fid, 'format')

C = textscan(fid, 'format', N)

C = textscan(fid, 'format', param, value, ...)

C= textscan(fid, 'format', N, param, value, ...)

输入参数

fid 为fopen命令返回的文件标识符

format 是一个字符串变量,表示读取数据及数据转换的规则。Format中包含了多种方式,其内容如表6.5所示。

表6.5  format内容

数据转换规则

说 明

%n

读取一个数字并转换为double

%d

读取一个数据并转换为int32

%d8

读取一个数据并转换为int8

%d16

读取一个数据并转换为int16

%d32

读取一个数据并转换为int32

%d64

读取一个数据并转换为int64

%u

读取一个数据并转换为uint32

%u8

读取一个数据并转换为uint8

%u16

读取一个数据并转换为uint16

%u32

读取一个数据并转换为uint32

%u64

读取一个数据并转换为uint64

%f4

读取一个数字并转换为double

%f32

读取一个数字并转换为float

%f64

读取一个数字并转换为double

%s

读取一个字符串

%q

读取一个可以是双引号括着的字符串

%c

读取一个字符,包括空格

%[…]

读取和括号中字符串相匹配的字符。读取操作在首次遇到不匹配的字符和空格时停止。例如%[mus]把summer读成summ

%[^…]

读取和括号中字符串不匹配的字符。读取操作在首次遇到不匹配的字符和空格时停止。例如%[^mus]把summer读成er

Textscan所支持的数字单元宽度声明有两种,具体如表6.6所示。

表6.6 textscan支持的数据读入格式

名称

说明

N

读“ㄐ∈阍谀诘腘个数字或者遇到的分隔符,例如%5f32会把473.238读为473.2

N.D

读“ㄐ∈阍谀诘腘个数字或者遇到的分隔符,返回的数字在小数点后有D位数,例如%7.2f会把473.238读为473.23

下面建立新文件test1.txt,文件前2行是字符串,后三行是数组,首先查看其内容。

>> !type c:\test1.txt

a1

a2

1

2

注意,在Command窗口下键入“!”后就可以直接执行Dos命令

>>file=fopen('c:\test1.txt','r');%打开需要读取的文件

>> str1=textscan(file,'%s',2)

;

>> str1{1}

ans =

'a1'

'a2

如果需要读取第3行、第4行可以执行下面命令。

>> da=textscan(file,'%f',[3 4])

;

>> da{1}

ans =

1

2

由于da是单元数据,下面将其转换为实数型。

>> cell2mat(da)

ans =

1

2

如果数据文件中有间隔符,需要忽略间隔符。

>> type c:\test3.txt

1 , 1 ,

2

32  , 3 , 4

>> tt=fopen('c:\test3.txt');

>>var=textscan(tt,'%f %f %f', 'delimiter', ',') %

忽略‘,’

>> aa=cell2mat(var)

aa =

1 1 2

32 3 4

结束时需要关闭文件

>> fclose(file)

>> !type c:\test2.txt

2 5 3 6

2 3 5

1 9 5 4 6

>> fid=fopen('c:\test2.txt');

>>for i=1:3 ,a{i}=fgets(fid);

end

>>fclose(fid);

6.1.5 带有间隔符的文本数据读写

1.读入带有间隔符的数据文件

有时数据与数据之间带有间隔符,需要跳过这些间隔符,才能读入下一个数据,MATLAB的dlmread函数可以执行此项功能,注意该函数只能读入数据文件,不能读入非数据文件。

调用方式

M = dlmread('filename')

M = dlmread('filename', delimiter)

M = dlmread('filename', delimiter, R, C)

M = dlmread('filename', delimiter, range)

输入参数

'filename' 等待读入的数据文件

delimiter 数据文件中有间隔符,默认的间隔符是逗号。

R、C 读入数据的起始位置

Rang 读入数据的位置,前面两个表示起始的行与列,后面表示数据区域的终止行与列

注意如果数据文件没有间隔符,delimiter可以用' '代替。

例如myfile.txt文件是3阶的魔方阵。

>> !type myfile.txt

8,1,6

3,5,7

4,9,2

下面读入MATLAB的M矩阵

>> M= dlmread('myfile.txt',

',')

M =

8 1 6

3 5 7

4 9 2

如果仅仅读入第三行,可以执行如下命令。

>> M= dlmread('myfile.txt',

',',2,0)

M =

4 9 2

注意数据起始于第0行第0列。

2.写入带有间隔符的数据文件

调用方式

dlmwrite('filename', M)

dlmwrite('filename', M, 'D')

dlmwrite('filename', M, 'D', R, C)

dlmwrite('filename', M, attribute1, value1, attribute2, value2,

...)

dlmwrite('filename', M, '-append')

dlmwrite('filename', M, '-append', attribute-value list)

输入参数

filename 写入数据的文件名

M MATLAB中变量

'D' 间隔符

R 数据起始的行

C 数据起始的列,R=0,C=0表示从第1行第1列开始写入数据

-append' 添加数据操作,否则将删除旧数据

attribute1 属性1

value1 属性1的值。其内容如表6.7所示。

表6.7

dlmwrite函数属性的内容

属性

内容

delimiter

间隔符

roffset

新老数据间隔行数

coffset

新老数据间隔列数

precision

数据精度,如'%10.5f'

下面将3阶魔方阵写入文件myfile.txt中。

>> M=magic(3);

>> dlmwrite('myfile.txt', M,

'delimiter', '\t', 'precision', 6)

>> !type myfile.txt

8 1 6

3 5 7

4 9 2

如果需要空一行后添加再新数据,可以键入如下命令。

>> dlmwrite('myfile.txt', M,

'delimiter', '\t','roffset',1,'-append')

>> !type myfile.txt

8 1 6

3 5 7

4 9 2

8 1 6

3 5 7

4 9 2

如果保留2位小数。

>> dlmwrite('myfile.txt', M,

'delimiter', ',', 'precision', '%1.2f');

>> type myfile.txt

8.00,1.00,6.00

3.00,5.00,7.00

4.00,9.00,2.00

matlab怎么隔行读取txt,读取TXT文件数据相关推荐

  1. ajax读取文件数据,Ajax 实现读取 properties 格式资源文件数据

    Ajax 的核心是 JavaScript 对象 XmlHttpRequest.该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术.简而言之,XmlHttpRequ ...

  2. Android读取assets目录下文件数据内容

    Android读取assets目录下文件数据内容 Android的体系架构设计中,assets目录下的数据内容(图片.文件等等)将不会被Android系统压缩.二次处理等,assets目录下的文件 ...

  3. PHP读取超大的excel文件数据的方案

    场景和痛点 说明 今天因为一个老同学找我,说自己公司的物流业务都是现在用excel处理,按月因为数据量大,一个excel差不多有百万数据,文件有接近100M,打开和搜索就相当的慢 联想到场景:要导入数 ...

  4. sex 无需下载_js读取本地json格式文件数据的几种实现方法,内有vue读取json示例代码。...

    方法一:通过getJSON实现 getJSON是jquery提供的读取json格式文件的方法 首先我们将html中引入jquery,可以通过百度CDN引入,代码如下: 然后就可以在script中使用g ...

  5. matlab 导入/制作/导出 STK .tle卫星文件/数据(直接/间接,好几种方法)

    导入/制作/导出卫星tle文件 整理: 代码: 整理: 1.在STK help中的 inFrance Help里的core code 里 能够导入的文件只有.a文件 2.导出.tle文件参考拜火老师的 ...

  6. 读取Assets中的文件数据

    首先在assets文件夹中新建一个text.text文件用来读取 读取文件代码如下: import java.io.BufferedReader; import java.io.IOException ...

  7. pandas库读取多个excel文件数据并进行筛选合并处理后导入到新表格中

    一.说明: 通过pandas库解决生活中的实际问题,关键词:pandas:Series/DataFrame 实际场景: ①前几日家中的服装店部分库存需要补货,店长向厂家下了部分订单: ②几日后到了一批 ...

  8. matlab读取TXT文件数据,二进制文件数据

    1. maltab自带工具 选择数据文件后 可以看到如下界面 可以根据实际选择分隔符,一般是空格或者逗号 有些第一行还有变量名,所以一般舍去第一行等 最后点击导入所选内容即可 优缺点 不能打开太大的文 ...

  9. python 如何使用 pandas 在 flask web 网页中分页显示 csv 文件数据

    目录 一.实战场景 二.知识点 python 基础语法 python 文件读写 python 分页 pandas 数据处理 flask web 框架 jinja 模版 三.菜鸟实战 初始化 Flask ...

  10. matlab 读取txt文件数据

    文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件.MATLAB提供了一系列低层输入输出函数,专门用于文件操作. 1.文件的打开与关闭 1)打开文件 在读写文件之前,必须先用f ...

最新文章

  1. WebRTC端点检测使用中遇到的部分问题汇总
  2. http error code
  3. PHP+JS动态显示当前时间
  4. 2016年第七届蓝桥杯C/C++ B组国赛 —— 第一题:一步之遥
  5. Chrome firefox ie等浏览器空格nbsp;宽度不一样怎么办
  6. mysql存储过程 简书_MySQL存储过程
  7. python计算AA制时砍价后大家需要分摊的钱
  8. hibernate简单入门教程(四)---------关联映射
  9. android 微信地址选择,安卓微信位置实时修改
  10. 简要分析VB6.0和VB.NET区别
  11. 移动终端浏览器初始设置apple-mobile-web-app-capable(转)
  12. CSS3 SVG 画一个三角形
  13. 汉堡按钮的制作以及其中的问题
  14. AD20 PCB导出Gerber、拼板,华秋DFM一键拼板,同理支持其他PCB EDA软件的Gerber导入与拼板
  15. 西湖大学人工智能与生物医学影像实验室招聘科研助理及博士后
  16. html长图转换成pdf,iOS将HTML页面转换成PDF文件保存到本地并分享传输文件
  17. 桌面ICON的红图标
  18. dya50 javascript
  19. Macos下的docker安装目录在哪?
  20. MyLinearLayout 之 初级学习经验

热门文章

  1. kalibr 进行相机单目、双目标定全流程
  2. android 点赞礼花动画,HTML5 仿Twitter的心形(点赞/喜欢)动画 - 烟花绽放
  3. 程序员在 Github 上疯狂薅羊毛!
  4. 用例图类图练习(网上购物平台)
  5. 【记录】年底了,上班有感
  6. 深入理解 Jvm 读书笔记(一)
  7. 访问华为云上项目出现“无法访问网络”
  8. Linux基本指令学习笔记
  9. python绘制太阳系模型_画一个太阳系的模型
  10. 【Idea技巧】02.Idea包进行展开