0

我正在执行以下代码,以根据其中一行(指定行 q)中所有字符的值过滤从一个文件中提取的四行组,并将过滤后的行写入新文件。

fin = fopen(fname_in,'r') ;  
fout = fopen(fname_out,'w') ;  
y = 0 ;  
w = 0 ;  
fprintf(1,'Filtering') ;  
while ~feof (fin)  
  w=w+1 ;  
  if ~mod(w,50000) 
    fprintf(1,'.'); 
  end  
  t = fgets(fin) ;  
  s = fgets(fin) ;  
  p = fgets(fin) ;   
  q = fgets(fin) ;  
  if all(q(1:len) >= phred+phred_code)  
    y = y + 1 ;  
    fwrite(fout,[t s([1:len end]) p q([1:len end])]) ;  
  end  
end  

fclose(fin) ;  
fclose(fout) ;  

代码可以运行,但是需要很长时间才能运行。

还有什么其他方法可以加速代码?

谢谢

4

1 回答 1

1

通常,执行更少但更大的读取和写入操作会更快。如果文件足够小,您可以读取整个文件,处理行,然后写入整个文件。如果文件太大,您可以循环读取、处理和写入文件的块而不是单独的行。

于 2013-01-24T20:12:09.960 回答