Считать номера строк m-to-n из текстового файла (MATLAB) - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь прочитать данные из файла .txt.Пример данных приведен ниже.Мне нужен алгоритм, чтобы прочитать только номера строк MN.Хотя я могу использовать циклы 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 ]

3 голосов
/ 01 марта 2012

Вы можете попробовать 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);
0 голосов
/ 01 марта 2012

Если бы ваши данные были в формате CSV, а не в текстовом формате, вы могли бы использовать команду:

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

Очевидно, что если ваши данные доступны только в текстовом формате, было бы столько же работыпреобразуйте его вручную, как если бы вы использовали опцию textcan, но если ваш текстовый файл создается в другом месте, где вы можете контролировать формат вывода, это может упростить процесс.

...