Znajdź ciąg w tablicy komórek z elementami różnych typów

Mam funkcję, która przyjmuje zmienne argumenty. Argumenty te są parami parametr-wartość, więcvarargin jest tablicą komórek, w której każdy nieparzysty element jest łańcuchem (parametrem), ale elementy indeksowane parzysto mogą być łańcuchem, liczbą lub tablicą komórek ciągów. Chcę znaleźć indeks określonego ciągu wvarargin. Mam działające rozwiązanie, ale używaarrayfun dwa razy; czy istnieje jakiś czystszy / szybszy / bardziej skuteczny sposób znalezienia ciągu w takiej tablicy komórek? Powstałyindex zostanie użyty do usunięcia tego elementu i następującego elementuvarargin. Chciałbym zminimalizować tworzenie nowych zmiennych.

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)=[];

Danyvarargin jest{'paramA', 'valueA', 'paramB', 9, 'paramX', {'z','x','c'}, następniefinds jest[] [] [] [] [1] {1x3 cell}, finds2 jest0 0 0 0 1 0, iindex jest5. Więc moje rozwiązanie robi to, czego potrzebuję, ale wydaje się po prostu brzydkie. Po prostu użyłbymfinds2 (tj. nie twórzindex), aby usunąć ten element zvarargin, ale muszę też usunąć ten, który jest po nim.

questionAnswers(2)

yourAnswerToTheQuestion