如何在matlab中使用textscan

时间:2017-09-24 13:14:56

标签: matlab textscan

我正在尝试将以下文本文件添加到matlab

中的矩阵中

time.txt

我尝试使用'textscan'

fileID = fopen('Uz10.txt');

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

fclose(fileID);

但是alwayes得到了,

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

任何人都可以给我正确的格式吗?

1 个答案:

答案 0 :(得分:0)

您可以这样修改代码:

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) cellarrayint32类型,其中包含每行的两位数。然后你可以将它们连接起来,以便有一个(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
   ...

希望这有帮助,

Qapla'