MATLAB находит точную строку в массиве ячеек

Опубликовано: 19 Февраля, 2023

Массивы ячеек в 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);

Выход: