Давайте придерживаться примера из документации по contains
: В Octave нет строк (в двойных кавычках), представленных в MATLAB R2017a. Итак, нам нужно переключиться на простые, старые (в одинарных кавычках) массивы символов. В см. Также раздел , мы получаем ссылку на strfind
. Мы будем использовать эту функцию, которая также реализована в Octave, чтобы создать анонимную функцию, имитирующую поведение contains
. Также нам понадобится cellfun
, который также доступен в Octave. Пожалуйста, посмотрите следующий фрагмент кода:
% Example adapted from https://www.mathworks.com/help/matlab/ref/contains.html
% Names; char arrays ("strings") in cell array
str = {'Mary Ann Jones', 'Paul Jay Burns', 'John Paul Smith'}
% Search pattern; char array ("string")
pattern = 'Paul';
% Anonymous function mimicking contains
contains = @(str, pattern) ~cellfun('isempty', strfind(str, pattern));
% contains = @(str, pattern) ~cellfun(@isempty, strfind(str, pattern));
TF = contains(str, pattern)
Вывод выглядит следующим образом:
str =
{
[1,1] = Mary Ann Jones
[1,2] = Paul Jay Burns
[1,3] = John Paul Smith
}
TF =
0 1 1
Это должно напоминать вывод MATLAB contains
.
Итак, в конце концов - да, вам нужно скопировать функциональность самостоятельно, поскольку strfind
не является точной заменой.
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ: Используйте 'isempty'
вместо @isempty
в вызове cellfun
, чтобы получить более быструю встроенную реализацию (см. комментарий carandraug ниже).