Как узнать длину файла в MATLAB? - PullRequest
4 голосов
/ 03 июня 2009

Есть ли способ определить длину файла .dat (в терминах строк) без загрузки файла в рабочую область?

Ответы [ 3 ]

18 голосов
/ 25 августа 2011

Счетчик строк - загружает только один символ в строке:

Nrows = numel(textread('mydata.txt','%1c%*[^\n]'))

или длина файла (Matlab):

datfileh = fopen(fullfile(path, filename));
fseek(datfileh, 0,'eof');
filelength = ftell(datfileh);
fclose(datfileh);
12 голосов
/ 03 июня 2009

Я предполагаю, что вы работаете с текстовыми файлами, так как вы упомянули поиск количества строк. Вот одно из решений:

fid = fopen('your_file.dat','rt');
nLines = 0;
while (fgets(fid) ~= -1),
  nLines = nLines+1;
end
fclose(fid);

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

3 голосов
/ 07 июня 2009

Стоит также помнить, что вы можете использовать встроенные команды вашей файловой системы, поэтому в Linux вы можете использовать команду

[s,w] = system('wc -l your_file.dat');

, а затем получить количество строк из возвращенного текста (который хранится в w). (Я не думаю, что есть эквивалентная команда под Windows.)

...