Matlab 每N行读取一次数据,读取条件后的所有行

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行读取第一列

我有一个名为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行读取第一列增量为.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