向后兼容 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);
我正在编写一组函数,供使用旧版 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);