Matlab 每N行读取一次数据,读取条件后的所有行
我有一个名为Myfile.txt的文件,其中包含一个标题和三行数据:Matlab 每N行读取一次数据,读取条件后的所有行,matlab,for-loop,if-statement,conditional-statements,Matlab,For Loop,If Statement,Conditional Statements,我有一个名为Myfile.txt的文件,其中包含一个标题和三行数据: Header Row1 Row2 Row3 5.10 10 15 5.20 20 25 5.30 30 35 5.40 40 45 5.50 50 55 5.60 60 65 5.70 70 75 5.80 80 85 5.90 90 95 5.95 10 20 6.00 25 30 6.05 35 40 我希望每3行读取第一列
Header Row1 Row2 Row3
5.10 10 15
5.20 20 25
5.30 30 35
5.40 40 45
5.50 50 55
5.60 60 65
5.70 70 75
5.80 80 85
5.90 90 95
5.95 10 20
6.00 25 30
6.05 35 40
我希望每3行读取第一列增量为.1的数据,然后读取增量为.05后的所有数据,因此我的输出如下所示:
5.30 30 35
5.60 60 65
5.90 90 95
5.95 10 20
6.00 25 30
6.05 35 40
我有下面的代码,但我不知道如何实现这个条件,我可以得到一些帮助吗
per_line = 3;
every_nth_line = 3;
fmt = [repmat('%*f',1,per_line*(every_nth_line-1)), repmat('%f',1,per_line)];
fid = fopen('Myfile.txt','rt');
datacell = textscan(fid,fmt,'delimiter','\n','HeaderLines',1,'CollectOutput',1);
fclose(fid);
C=datacell{1};
您可以使用以下代码:
fileID = fopen('Myfile.txt');
mydata = textscan(fileID,'%f%f%f','HeaderLines',2);
findx = (find(abs(diff([mydata{1}(1)-0.1;mydata{1}])-0.1000)<0.0001));
sindx = (find(abs(diff(mydata{1})-0.05)<0.0001))+1;
alldata = [mydata{:}];
C= [alldata(findx(3:3:end),:);alldata(sindx,:)];
fclose(fileID);
@代码741不客气,请接受答案,因为它解决了您的问题:)看看如何做到这一点。
5.3000 30.0000 35.0000
5.6000 60.0000 65.0000
5.9000 90.0000 95.0000
5.9500 10.0000 20.0000
6.0000 25.0000 30.0000
6.0500 35.0000 40.0000