Импорт текстовых файлов с комментариями в MATLAB - PullRequest
4 голосов
/ 14 декабря 2009

Существуют ли какие-либо символы или комбинации символов, которые MATLAB интерпретирует как комментарии при импорте данных из текстовых файлов? Если он обнаружит это в начале строки, то узнает, что вся строка должна игнорироваться?

У меня есть набор точек в файле, который выглядит следующим образом: alt text И, как вы видите, он, кажется, не очень хорошо их понимает. Есть ли что-нибудь кроме // я мог бы использовать, что MATLAB знает, что это игнорировать?

Спасибо!

Ответы [ 3 ]

10 голосов
/ 14 декабря 2009

На самом деле ваши данные не согласованы, так как вы должны иметь одинаковое количество столбцов для каждой строки.

1)

Кроме того, использование «%» в качестве комментариев будет правильно распознано importdata :

file.dat

%12 31
12 32
32 22
%abc
13 33
31 33
%ldddd
77 7
66 6
%33 33
12 31
31 23

1012 * MATLAB * data = importdata('file.dat') 2) В противном случае используйте textcan для указания произвольных символов комментария: file2.dat

//12 31
12 32
32 22
//abc
13 33
31 33
//ldddd
77 7
66 6
//33 33
12 31
31 23

1024 * MATLAB * fid = fopen('file2.dat'); data = textscan(fid, '%f %f', 'CommentStyle','//', 'CollectOutput',true); data = cell2mat(data); fclose(fid);

4 голосов
/ 14 декабря 2009

Если вы используете функцию textscan, вы можете установить для параметра CommentStyle значение // или %. Попробуйте что-то вроде этого:

fid = fopen('myfile.txt');
iRow = 1;
while (~feof(fid)) 
    myData(iRow,:) = textscan(fid,'%f %f\n','CommentStyle','//');
    iRow = iRow + 1;
end
fclose(fid);

Это сработает, если в строке два числа. Я заметил, что в ваших примерах количество чисел в строке варьируется. Есть несколько строк только с одним номером. Этот представитель ваших данных? Вам придется обрабатывать это по-разному, если в каждой строке нет одинакового количества столбцов.

1 голос
/ 14 декабря 2009

Вы пробовали %, символ комментария по умолчанию в MATLAB?

Как отметил Амро, если вы используете importdata, это будет работать.

...