Чтение текстового файла с переменным количеством записей в Matlab - PullRequest
0 голосов
/ 24 августа 2018

У меня есть текстовый файл, который выглядит следующим образом, например

1 12 34
67 56 78 98 98
...

В основном ряд чисел, но размер строки не фиксирован. Есть ли быстрый способ прочитать это в matlab и, возможно, сохранить содержимое в массиве ячеек?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

попробуй текстовое сканирование

str = fopen('test.txt');
data = textscan(str,'%s','Delimiter','\n');
%data = textscan(str,'%f');
fclose(str);
0 голосов
/ 24 августа 2018

importdata прочитает ваш файл и заполнит пустые места NaN, которые могут быть использованы.

Или вы анализируете ваш файл напрямую:

str = fileread('file.txt'); %read your file into a string
data = cellfun(@(line) cellfun(@str2double, strsplit(line, ' '), 'UniformOutput', false), strsplit(str, '\r\n'), 'UniformOutput', false);

strsplit разделяется в операторе возврата -> первый массив ячеек

Используйте эти массивы ячеек в качестве входных данных и разделите их на пробелы.

data = cellfun(@(line) str2double(strsplit(line, ' ')), strsplit(str, '\r\n'), 'UniformOutput', false);

Вы также можете использовать str2double для непосредственного преобразования массива ячеек в числа, но тогда это будет обычный массив, что означает, что для доступа будут данные {1} (2) вместо данных {1} {2 } и я бы предпочел, чтобы стили были выровнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...