Эффективные способы найти несколько элементов в массиве в MATLAB

Поиск нескольких элементов в массиве — обычная задача в программировании MATLAB. В этой статье блога мы рассмотрим различные методы эффективного выполнения этой задачи. Каждый метод будет сопровождаться примерами кода, иллюстрирующими его реализацию.

Методы поиска нескольких элементов в массиве:

  1. Использование логического индексирования.
    Один простой подход — использовать логическое индексирование. Это предполагает создание логического вектора, который указывает на наличие нужных элементов в массиве. Вот пример:
% Input array
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
% Elements to find
elements = [2, 4, 6];
% Logical indexing
indices = ismember(array, elements);
% Filtering the array
result = array(indices);
  1. Использование функции ismember:
    MATLAB предоставляет функцию ismember, которая позволяет вам определять членство элементов в массиве. Этот метод возвращает логический массив, указывающий наличие или отсутствие каждого элемента. Вот пример:
% Input array
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
% Elements to find
elements = [2, 4, 6];
% Using ismember function
[~, indices] = ismember(array, elements);
% Filtering the array
result = array(indices);
  1. Использование функции intersect.
    Другой метод — использование функции intersect, которая находит общие элементы между двумя массивами. Передавая входной массив и искомые элементы в качестве аргументов, вы можете получить желаемый результат. Вот пример:
% Input array
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
% Elements to find
elements = [2, 4, 6];
% Using intersect function
result = intersect(array, elements);
  1. Использование цикла:
    Если вы предпочитаете более традиционный подход, вы можете использовать цикл для перебора массива и проверки наличия нужных элементов. Вот пример:
% Input array
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
% Elements to find
elements = [2, 4, 6];
% Looping through the array
result = [];
for i = 1:numel(array)
    if ismember(array(i), elements)
        result = [result, array(i)];
    end
end