【问题标题】:textscan strange behaviour in matlabmatlab中的textscan奇怪的行为
【发布时间】:2013-06-17 22:34:12
【问题描述】:

我有一个代码,我试图在 matlab 中运行,它在 textscan 函数中给出错误 因为它不能在分隔符上拆分字符串,尽管我确信代码适用于其他版本的 matlab(在其他计算机上)

>> a='ahmed;mohamed'

a =

ahmed;mohamed

>> b = textscan(a, '%s;%s', 'Delimiter', ';')

b = 

    {1x1 cell}    {0x1 cell}

>> b{1}

ans = 

    'ahmed'

>> b{2}

ans = 

   Empty cell array: 0-by-1

有人可以解释为什么会这样吗? textscan 功能最近有变化吗? 我正在使用 matlab 2013

【问题讨论】:

    标签: matlab textscan


    【解决方案1】:

    这行得通:

    str = 'ahmed;mohamed';
    C = textscan(str, '%s', 'Delimiter',';', 'CollectOutput',true);
    C = C{1};
    

    与:

    >> C
    C = 
        'ahmed'
        'mohamed'
    

    【讨论】:

    • 您不应该将分隔符放在格式字符串中,因此您也可以使用:'%s %s'(无分号)。前一个有效,因为“formatSpec”被重复应用(即第三个输入参数“N”是Inf,如果没有指定)
    • 作为对 Amro 答案的补充,原始代码不起作用的原因是 textscan 不需要您在 FORMAT 字段中指定分隔符。该函数假定分隔符出现在连续的模式匹配之间。
    • 非常感谢,显然他们已经改变了版本之间的内部实现,我的代码有点旧
    • 例外是 %c 说明符,它读取包含分隔符的单个字符
    最近更新 更多