MATLAB находит точную строку в массиве ячеек
Массивы ячеек в MATLAB хранят данные различных типов в виде ячеек. Эти ячейки могут содержать данные разных типов, но принадлежать одному и тому же массиву. Теперь эта статья посвящена поиску точной строки в массиве ячеек в MATLAB. Это можно легко сделать, используя комбинацию двух функций MATLAB, функций strcmp() и find(). Давайте посмотрим, как это делается
Синтаксис:
s_log = strcmp(<array>,<string>)
index = find(s_log)
Это вернет вектор с индексами всех строковых элементов, которые точно соответствуют заданной строке . Функция strcmp() принимает на вход массив и строку. Затем он сравнивает строку со всеми значениями в переданном массиве и возвращает логический массив с 1 в совпадающих ячейках и 0 в несовпадающих. См. ниже, чтобы понять то же самое.
Пример 1:
Matlab
% MATLAB program for find Exact String in Cell Array% cell arrayarr = cell({"geeks", "for", "geeks"}); % String to be checkedstr = "geeks"; % Getting a logical array from strcmpstrcmp(arr,str) |
Выход:
Это должно вернуть вектор [1 0 1], так как строка str дважды встречается в массиве arr по индексам 1 и 3.
Теперь мы можем использовать функцию find, чтобы получить индексы ненулевых элементов из этого логического массива, которые будут такими же, как индексы появления нашей строки 'str'.
Пример 2:
Matlab
% MATLAB program arr = cell({"geeks", "for", "geeks"});str = "geeks";ind_log = strcmp(arr,str);index = find(ind_log) |
Выход:
Как можно убедиться, строка 'geeks' появляется по двум индексам 1 и 3, и наша программа дает один и тот же результат. Давайте возьмем другой пример, где мы находим строку «дьявол» в заданном массиве ячеек.
Пример 3:
Matlab
% MATLAB code for arrayarr = cell({"devil", "is", "not","home"}); % Stringstr = "devil"; % Finding logical arrayind_log = strcmp(arr,str); %Finding indices using find functionsindex = find(ind_log); |
Выход: