【问题标题】:how to use textscan in matlabmatlab中如何使用textscan
【发布时间】:2017-09-24 13:14:56
【问题描述】:

我正在尝试将以下文本文件插入 matlab 中的矩阵

time.txt

我尝试使用“文本扫描”

fileID = fopen('Uz10.txt');

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

fclose(fileID);

但总是得到,

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

谁能给我正确的格式?

【问题讨论】:

    标签: matlab textscan


    【解决方案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 返回int32 类型的(1x2) cellarray,其中包含每行的两位数。然后你可以连接它们以获得(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
       ...
    

    【讨论】: