向后兼容 contains()

Backwards compatible contains()

我正在编写一组函数,供使用旧版 MATLAB (2015a/2015b) 的同事使用。在我的一个函数中,我使用了 contains(),它仅在 2016b 中引入,因此不向后兼容。我想提供一个解决方法,但我不太确定该怎么做。我正在处理的具体问题如下:

files = {'/some/path/sub001file','/some/path/sub002file','/some/path/sub003file'};
subjects = {'sub001','sub003'};
files = files(contains(files,subjects))

我正在寻找一种方法来将第三行替换为在 MATLAB2015a 及更高版本上 运行 并提供相同输出的行。顺便说一句,由于这是一个相当小的操作,因此代码的可读性比计算效率更重要。

有点绕,不过下面的就可以了,

idx = cellfun(@(c)~all(cellfun(@(d)isempty(strfind(c,d)),subjects)),files);
files = files(idx);