regexp无法在Octave中按预期方式工作

时间:2020-02-15 18:48:57

标签: octave

我已经从here下载了“ NYU Depth V2”数据集和工具箱。工具箱中有一个名为get_synched_frames.m的脚本。我没有Matlab,因此我尝试在Octave中运行它。不幸的是,它不能按预期工作。

% Faster than matlab's Dir function for big directories and slow
% distributed file systems...
files = regexp(ls(sceneDir), '(\s+|\n)', 'split');

仅给予

files =
{
  [1,1] = a-1300302776.479149-3987628315.dump
}

但是ls(sceneDir)显示目录中的所有文件。有人遇到过吗?

1 个答案:

答案 0 :(得分:4)

差异可能不在regexp中,而是在返回值ls中。捕获ls的返回值时,它们在Matlab和Octave中的行为不同。 Matlab的ls返回一个char行向量(单个字符串为char),其中多个文件作为包含嵌入式换行符的多行字符串列出;八度的ls返回一个二维char数组,每行一个文件。 (IMHO Octave的格式更好;很难以可靠正确的方式解析Matlab的ls输出。(该正则表达式代码不足。))

您可能只想在Octave中使用它:

files = cellstr(ls(sceneDir));