Чтение текстового файла, Matlab - PullRequest
1 голос
/ 23 сентября 2011

Я читаю текстовый файл «mytext.text» в Matlab.Файл данных выглядит так:

1   -4436.6910  415.1843    -3019.7497  1,3,4,5,21,23

2   -4366.4541  1353.9975   -3085.1166  1,3,4,23

....

Я не знаю длину Col5.Как я могу прочитать это в Matlab?

fid=fopen( 'mytext.text','r');

Grdata = textscan(fid, '%d %f %f  %f  (Col 5 what should be)% This line is 
problem%  

fclose(fid); 

Любая помощь.

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Одна из возможностей - прочитать последний столбец как строку, а затем преобразовать ее в числа.

fid = fopen('file.dat','r');
C = textscan(fid, '%f %f %f %f %s', ...
    'Delimiter',' ', 'MultipleDelimsAsOne',true, 'CollectOutput',true);
fclose(fid);

C = [num2cell(C{1}) cellfun(@str2num, C{2}, 'UniformOutput',false)]

Полученный массив ячеек:

C = 
    [1]    [-4436.7]    [415.18]    [-3019.7]    [1x6 double]
    [2]    [-4366.5]    [  1354]    [-3085.1]    [1x4 double]

с:

>> C{1,end}
ans =
     1     3     4     5    21    23
>> C{2,end}
ans =
     1     3     4    23
0 голосов
/ 23 сентября 2011

Чтобы прочитать одну строку, сделайте

% Read at most 4 elements
data1234 = fscanf (fid, '%d %f %f %f', 4);
% Read as many elements as possible, stop when no ',' is found
data5 = fscanf (fid, '%d,');

Продолжайте чтение строк, пока не дойдете до конца файла (перед этим сохраните данные из каждой строки). Так что вам нужен цикл, который продолжает делать это до тех пор, пока файл не закончится.

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