【matlab】对每一行数据不等的txt文件读取问题

文件读取方法

 

目标:读取每一行数字数目不同的纯文本文件。形如:

 

9

 

2   8  9   7   3  4   6   8   9

 

0   0  2   8   7  4   0   1   6

0   0  8   0   2  7   4   4   6

2   8  0   2   7  8   0   2   6

8   0  2   0   5  0   8   8   6

7   2  7   5   0  5   4   7   6

4   7  8   0   5  0   8   2   6

0   4  0   8   4  8   0   4   6

1   4  2   8   7  2   4   0   6

6   6  6   6   6  6   6   6   0

 

高级函数:

调用低级函数,语法简单,使用方便。

1. File-Import data

只适合纯数字(列数相同)或者开头只有几行文字(数字列数相同)的文件输入,保存为同文件名的.mat文件。

 

2. 函数 importdata

A=importdata(filename)

importdata('examp6_2_4.txt')

 

注意filename要加上.txt.

 

3. 函数load

 

load F_S9.txt

load -ascii  F_S9.txt  %强制以文本方式读取数据

 

注意:不能读取隔行数据不等长的情况

 

 

4. dlmread函数

 

M = dlmread (filename)

M = dlmread (filename, delimiter)

M = dlmread (filename, delimiter,R, C)  %R,C:指定读取开始点所在的行或者列, R=0 C=0表示第一行第一列。

M = dlmread (filename, delimiter, range)   %range=[R1,C1,R2,C2]

x = dlmread('examp6_2_3.txt')

x = dlmread('examp6_2_3.txt', ',', 2, 3)

x = dlmread('examp6_2_3.txt', ',', [1, 2, 2, 5])

 

数据不等长时,会自动以0补齐。

利用指定读取范围进行读取。

n=dlmread('singlerow_S9.txt','',[0,0,0,0])%读取第一个数字

l=dlmread('singlerow_S9.txt','',[2,0,2,n-1])%读取第三行数字

f=dlmread('singlerow_S9.txt','',4,0)  %读取第五行以后的数字

 

低级函数

语法复杂,按照各种格式读取文件,具有很好的灵活性。

 

1. 调用fopen 函数打开文件

fid = fopen ( filename, permission)   %fid 为正数,则找到这个文件。没有找到则返回-1.

 

[fid, message] = fopen('xiezhh.txt')

 

filename=['E:\software study\matlab\','6_2_1','.txt'];

disp (filename);

fid=fopen(filename);

 

2. 调用fclose 关闭打开的文件。

Close(fid)关闭文件标识符fid指定的文件。

Close(all) 关闭所有被打开的文件

filename=['E:\software study\matlab\','6_2_1','.txt'];

disp (filename)

fid=fopen(filename)

fclose(fid)

 

3. 调用fgets 和fgetl 函数读取文件的下一行

Fgets 读取下一行,包括换行符,fgetl 不包括换行符。

Tline=fgetl(fid)

Tline=fgetl(fid,nchar)  %nchar 表示只读取前nchar个字符,其他的会丢掉。

filename=['E:\software study\matlab\','6_2_1','.txt'];

disp (filename);

fid=fopen(filename);

n=fgets(fid)

fgetl(fid)

l=fgetl(fid)

fclose(fid);

 

不能对几行的范围同时操作。只能得到第一和第三行的信息。

filename=['E:\software study\matlab\Learning code\File_Exchange\','singlerow_S9','.txt'];

disp (filename);

fid=fopen(filename);

n=fgetl(fid)

fgetl(fid);

l=fgetl(fid)

fclose(fid);

 

总结:

使用dlmread函数对此问题的解决比较有效。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值