具体是这样的,比如说我有100个按照序号排列的txt文件,文件名如下:file(1).txt、file(2).txt、……file(100).txt,每个txt文件中并不是纯数据,开头还有一些解释说明,如下图所示 。我需要的是每个文件中的第60行的数据,就是读取这一行的数据,然后将100txt个文件中的这一行的数据全部放到一个矩阵当中。如果一行有7个数据,那么我的矩阵大小就是100行、7列的。请问如何编写这样的matlab程序,挺急的,希望高人指点。某一个TXT的文件内容如下,想要提取出红线画的那一行(假设该行是第60行)
这样:
% 实现思路:
% 1. 逐一以文本形式打开文件 file(n).txt ;
% 2. 逐行读出数据,并判断前9个字符是否 Timestamp ;
% 3. 如是,在下一行接收数据存入结果并退出此文件;
% 4. 如不是,继续往下读数据。
pt = 'd:\data\'; % 数据路径
ff = 'file'; % 数据文件前缀
ext = '.txt'; % 数据文件扩展名
stamp = 'Timestamp'; % 数据查找标志
n = 100; % 文件个数
for k = 1:n
id = num2str(k);
files{k} = [pt ff id ext]; % 文件名列表
end
dt = [];
for k = 1:length(files)
fds = 0; % 查找结果
fid = fopen(files{k});
while ~feof(fid)
tline = fgetl(fid)
if fds==1
dt = [dt; str2num(tline)];
fclose(fid);
break
else
if length(tline)>8
fds = strcmp(stamp,tline(1:9));
end
end
end
end
注意事项
它的基本语法是:
[A,B,C,...] = textread(filename,format)
[A,B,C,...] = textread(filename,format,N)
其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
中括号里面变量的个数必须和format中定义的个数相同。 如果每N行相同格式的数据,可采用[A,B,C,...] = textread(filename,format,N)的语法,读取N次。
举例如下:
例1:myfile.txt 中的内容如下:
1 2 3 4
5 6 7 8
9 10 11 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n');
或者为
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3);
例2:myfile.txt 中的内容如下:
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',');
这里delimiter指出分隔符,读数据的时候会自动跳过分隔符。
例3:myfile.txt 中的内容如下:
% this a comment
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',','headerlines', 1);
这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。
例4:myfile.txt 中的内容如下:Sally Level1 12.34 45 Yes
相应语句为:
filename = '.\myfile.txt';
[names, types, x, y, answer] = textread(filename , '%s %s %f %d %s', 1)
1、如果要忽略12.34这个浮点数:[names, types, y, answer] = textread(filename , '%s %s %*f %d %s', 1)。 %*f告诉textread跳过一个浮点数。
2、如果要忽略Level,只读取后面的数字:[names, levelnum, x, y, answer] = textread(filename , ... '%s Level%d %f %d %s', 1)
matlab中如何读取多个txt文件中的某一行的数据
1. 逐一以文本形式打开文件 file(n).txt ;2. 逐行读出数据,并判断前9个字符是否 Timestamp ;3. 如是,在下一行接收数据存入结果并退出此文件;4. 如不是,继续往下读数据。pt = 'd:\\data\\'; % 数据路径 ff = 'file'; % 数据文件前缀 ext = '.txt'; % 数据文件扩展名 s...
MATLAB如何一次读取指定多行数据?
调用格式:dataout=dataread(filein,fileout,line)如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据 a=textread('ll.txt');t=a(1:43,4:10);1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直...
Matlab要这样批量读取txt数据!科研效率UpUp第10期
首先,通过简单的'dir'命令,你可以列出指定路径下所有.txt文件,这是批量操作的第一步:matlab files = dir('path_to_your_files\/*.txt');接下来,利用readtable函数逐一读取这些txt文件,设置必要的参数以准备数据处理:matlab data = cell(1, length(files));for i = 1:length(files)data{i} ...
如何在matlab里用循环读取多个文本文档里的数据?
办法是把这些文件的文件名按一定的规律命名,假如有一百个数据文件,则可以把这些文件分别命名为:filename1.txt,filename2.txt,fielname100.txt,在读取的时候则可以使用循环:for i = 1:100 fileName = ['filename' num2str(i) '.txt'];x = load(filiName);end ...
求教matlaB读取txt指定行的方法!文件头几行和末几行是无用信息,中段...
使用textread函数进行读取,通过 'endofline' - end of line character (default determined from file)'expchars' - exponent characters (default is 'eEdD')这两个参数控制读取的行数。大量的文件通过dir函数来读取文件名,也可以通过循环构造文件名!
你好,matlab读取多个txt文件的最后一行,并将这些行分别输出到另一个t...
p) fn = [pt ff ss et]; fid = fopen('0.txt'); while ~feof(fid) tl = fgetl(fid); end fclose(fid); R(p) = str2num(tl);endnfn = [pt ff 'R.txt']; % 结果文件名save(nfn,'R','-ascii'); % 结果存为文本文件 R.txt ...
matlab,求问怎么读取如下图 txt格式中 某几行数据。
fid = fopen('filename.txt');C = textscan(fid, '%f %f %f', 'HeaderLines', 84);fclose(fid);HeaderLines可以指定跳过文件开头多少行,例子中是跳过前84行,从第85行开始读取。读到的数据存放在一个cell中,可以用cell2mat()转换成数组。
如何用matlab读取大量txt数据
你将这些文件名,列一些出来。找出规律。然后读。还有一种方法就是用dir命令列出文件,然后直接读。for i=3:51 file=['A058606.J',sprintf('%02d',i)]end
matlab怎么将一个文件夹下的多个文本里的数据一次提取出来
首先你的文本是什么文件,如果是excel就使用xlsread,如果是txt就使用textread函数,其次还可以使用load,importdata等函数 然后是有多个文件的问题,如果你的文件名是有一定规律可循的,可以通过一个循环来读取,在循环中构造文件名。如果文件名没有规律可循,你可以使用dir函数得到这些文件名,然后一个个的...
matlab怎么读取文本文件中的数据?
此代码的含义是,line行是title,line+1行到end是数据,按特定分隔符space读取数据。此方法可以读取文本在上和数据在下的文件。A是一个sturct,其中A.data就是所需的数据了。exapmle:A=importdata('test.txt',' ',4);%运行即可取得数据A.data 此方法也可以按以下操作获取:在文件菜单中选择 fil...