Найти строку в массиве ячеек с элементами разных типов

У меня есть функция, которая принимает переменные аргументы. Эти аргументы являются парами параметр-значение, поэтомуvarargin является массивом ячеек, в котором каждый элемент с нечетным индексом является строкой (параметром), но элементы с четным индексом могут быть строкой, числом или массивом ячеек строк. Я хочу найти индекс конкретной строки вvarargin, У меня есть рабочее решение, но оно используетarrayfun дважды; Есть ли более чистый / быстрый / более эффективный способ найти строку в таком массиве ячеек? Результирующийindex будет использоваться для удаления этого элемента и следующего изvarargin, Я хотел бы свести к минимуму создание новых переменных.

str_to_find = 'paramX'
finds = arrayfun(@(i) strfind(varargin{i},str_to_find), 1:length(varargin), 'UniformOutput', 0);
finds2 = arrayfun(@(i) ~iscell(finds{i}) && ~isempty(finds{i}), 1:length(finds));
index = find(finds2==1);

varargin(index)=[];
varargin(index)=[];

Даноvarargin является{'paramA', 'valueA', 'paramB', 9, 'paramX', {'z','x','c'}, затемfinds является[] [] [] [] [1] {1x3 cell}, finds2 является0 0 0 0 1 0, а такжеindex является5, Итак, моё решение делает то, что мне нужно, но оно кажется уродливым. Я бы просто использовалfinds2 (т.е. не создаватьindex) удалить этот элемент изvarargin, но мне также нужно удалить один после него.

Ответы на вопрос(2)

Ваш ответ на вопрос