您的位置:首页 > 编程语言 > MATLAB

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

2016-06-26 18:05 756 查看

文件读取方法

 

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

 
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函数对此问题的解决比较有效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: