как использовать textscan в матлабе

я пытаюсь вставить следующий текстовый файл в матрицу в Matlab

time.txt

Я пытался использовать «текстовое сканирование»

fileID = fopen('Uz10.txt');

Uz10=textscan(fileID,'%d');

fclose(fileID);

но всегда получал,

Undefined operator '*' for input arguments of type 'cell'.

может ли кто-нибудь дать мне правильный формат?


person Ahmed Nabil    schedule 24.09.2017    source источник


Ответы (1)


Вы можете изменить свой код следующим образом:

1) указав %s как format: в этом случае textscan возвращает cellarray строки

fileID = fopen('Uz10.txt');
% Uz10=textscan(fileID,'%d:%d');
Uz10=textscan(fileID,'%s');
fclose(fileID);

Вывод:

>> Uz10{1}

ans = 

    '0:00'
    '0:10'
    '0:20'
    '0:30'
     ...

2) указав %d:%d как format: в этом случае textscan возвращает (1x2) cellarray типа int32, содержащее две цифры каждой строки. Затем вы можете объединить их, чтобы получить матрицу (nx2)

fileID = fopen('Uz10.txt');
Uz10=textscan(fileID,'%d:%d');
% Uz10=textscan(fileID,'%s');
fclose(fileID);

t=[Uz10{1} Uz10{2}]

Вывод:

>> t=[Uz10{1} Uz10{2}]

t =

           0           0
           0          10
           0          20
           0          30
           ...        ...

Если вы хотите управлять данными как time data, вы можете использовать функцию datetime.

Например (используя первый из приведенных выше format для чтения входного файла):

datetime(Uz10{1},'InputFormat','m:ss')

Вывод:

>> datetime(Uz10{1},'InputFormat','m:ss')

ans = 

   24-Sep-2017 00:00:00
   24-Sep-2017 00:00:10
   24-Sep-2017 00:00:20
   24-Sep-2017 00:00:30
   ...
person il_raffa    schedule 24.09.2017