Matlab:从文本文件中删除值

时间:2014-05-05 18:30:02

标签: matlab text-processing

我有一个这样的文本文件:

1st col  2nd col 

    20   8
    300  9
    31   5
    20   7
    20   7
    300  8

文本文件中有很多此类数字。我必须用这个文件做两件事:

第一栏中所有这些数字都少于十次。应该从文本文件中删除所有行。

最后,我应该得到一个文件,其中省略了这些条目。

如何在Matlab中实现上述目标,或者哪些功能可以帮助我?

这段代码,我试过了:

data = importdata('check.txt'); 
data(data(:,1)<3,:)=[];

datacell = cellstr(num2str(data));

fileID = fopen('newfile.txt','w');
for k = 1:size(datacell,1)
    fprintf(fileID,'%s\n',datacell{k,:});
end
fclose(fileID);

check.txt:

32 7
32 7
32 7
6 9
32 7
32 7
56 7
6 87

newfile.txt:(输出文件)

32   7
32   7
32   7
 6   9
32   7
32   7
56   7
 6  87

1 个答案:

答案 0 :(得分:1)

可以使用importdata -

data = importdata(filepath1) %%// filepath1 is the path to the text file

num_occ = 3; %%// Minimum limit to no. of occurances for data to be kept

unqvals = unique(data(:,1))
data = data(~ismember(data(:,1),unqvals(histc(data(:,1),unqvals)<num_occ)),:)

datacell = cellstr(num2str(data));

fileID = fopen(filepath1,'w');
for k = 1:size(datacell,1)
    fprintf(fileID,'%s\n',datacell{k,:});
end
fclose(fileID);

请注意,它会将数据覆盖到输入文件中,如评论中所述。