我有一个这样的文本文件:
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
答案 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);
请注意,它会将数据覆盖到输入文件中,如评论中所述。