向后兼容包含()

时间:2017-09-20 00:30:18

标签: matlab backwards-compatibility

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

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

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

1 个答案:

答案 0 :(得分:3)

这有点令人费解,但以下内容可行,

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