从文本文件(MATLAB)中读取“m-to-n”行号

时间:2012-03-01 00:07:01

标签: matlab file-io row text-files

我正在尝试从.txt文件中读取数据。样本数据如下。我需要一个算法来读取M-N行号。虽然我可以使用while / for循环,但我担心它可能变得非常慢。谢谢!

a=[  1 6 11 16 ; 
     2 7 12 17 ; 
     3 8 13 18 ; 
     4 9 14 19 ; 
     5 10 15 20] ;    % data is in Test.txt --> 
                      % fid = fopen('Test.txt');
                      % a=a.'; fprintf(fid, '%.3f\t%.3f\t%.3f\t%.3f\r\n', a(:)) ;

fid = fopen('Test.txt') ;
AnsMat = fscanf(fid, '%f %f %f %f')

AnsMat = [2 7 12 17 ; 3 8 13 18] ;  % Read row-numbers 2 to 4 this time

2 个答案:

答案 0 :(得分:3)

你可以尝试textscan,它允许HeaderLines参数告诉matlab要跳过多少行。

例如,要读取行n(= 2)到m(= 4),您可以这样做:

fid = fopen('Test.txt');
C   = textscan(fid,'%f %f %f %f\n',m-n+1,'HeaderLines',n-1);
fclose(fid);

这确实将数据作为单元格数组返回,因此您必须将其转换为:

AnsMat = cell2mat(C);

答案 1 :(得分:0)

如果您的数据采用csv格式而不是文本格式,则可以使用以下命令:

text=csvread('yourfile.csv',1,1,[1 1 m n])

显然,如果您的数据仅以文本格式提供,那么手动转换它就像使用textscan选项一样多,但是如果您的文本文件是在您可以控制的其他地方生成的在输出格式上,这可以简化流程。