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 array arr = cell({ "geeks" , "for" , "geeks" }); % String to be checked str = "geeks" ; % Getting a logical array from strcmp strcmp(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 array arr = cell({ "devil" , "is" , "not" , "home" }); % String str = "devil" ; % Finding logical array ind_log = strcmp(arr,str); %Finding indices using find functions index = find(ind_log); |
Выход: