islocalmax

Найти локальные максимумы

Описание

пример

TF = islocalmax(A) возвращает логический массив, элементы которого равны 1 (true), когда локальный максимум обнаружен в соответствующем элементе массива, таблицы или расписания.

TF = islocalmax(A,dim) задает размерность A для работы. Для примера, islocalmax(A,2) находит локальные максимумы каждой строки матрицы A.

пример

TF = islocalmax(___,Name,Value) задает дополнительные параметры для нахождения локальных максимумов, используя один или несколько аргументы пары "имя-значение". Для примера, islocalmax(A,'SamplePoints',t) находит локальные максимумы A относительно меток времени, содержащихся в временном векторе t.

пример

[TF,P] = islocalmax(___) также возвращает известность, соответствующую каждому элементу A для любого из предыдущих синтаксисов.

Примеры

свернуть все

Вычислите и постройте график локальных максимумов вектора данных.

x = 1:100;
A = (1-cos(2*pi*0.01*x)).*sin(2*pi*0.15*x);
TF = islocalmax(A);
plot(x,A,x(TF),A(TF),'r*')

Figure contains an axes. The axes contains 2 objects of type line.

Создайте матрицу данных и вычислите локальные максимумы для каждой строки.

A = 25*diag(ones(5,1)) + rand(5,5);
TF = islocalmax(A,2)
TF = 5x5 logical array

   0   0   1   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   1   0   1   0
   0   1   0   0   0

Вычислите локальные максимумы вектора данных относительно меток времени в векторе t. Используйте 'MinSeparation' параметр для вычисления максимумов с интервалом не менее 45 минут.

t = hours(linspace(0,3,15));
A = [2 4 6 4 3 7 5 6 5 10 4 -1 -3 -2 0];
TF = islocalmax(A,'MinSeparation',minutes(45),'SamplePoints',t);
plot(t,A,t(TF),A(TF),'r*')

Figure contains an axes. The axes contains 2 objects of type line.

Задайте метод для указания последовательных максимальных значений.

Вычислите локальные максимумы данных, которые содержат последовательные максимальные значения. Указание максимума каждой плоской области на основе первого вхождения этого значения.

x = 0:0.1:5;
A = min(0.75, sin(pi*x));
TF1 = islocalmax(A, 'FlatSelection', 'first');
plot(x,A,x(TF1),A(TF1),'r*')

Figure contains an axes. The axes contains 2 objects of type line.

Укажите максимальное значение каждой плоской области со всеми вхождениями этого значения.

TF2 = islocalmax(A, 'FlatSelection', 'all');
plot(x,A,x(TF2),A(TF2),'r*')

Figure contains an axes. The axes contains 2 objects of type line.

Выберите максимумы на основе их известности.

Вычислите локальные максимумы вектора данных и их известность, а затем постройте график с данными.

x = 1:100;
A = peaks(100);
A = A(50,:);
[TF1,P] = islocalmax(A);
P(TF1)
ans = 1×2

    1.7703    3.5548

plot(x,A,x(TF1),A(TF1),'r*')
axis tight

Figure contains an axes. The axes contains 2 objects of type line.

Вычислите только самый заметный максимум в данных, указав требование минимальной известности.

TF2 = islocalmax(A,'MinProminence',2);
plot(x,A,x(TF2),A(TF2),'r*')
axis tight

Figure contains an axes. The axes contains 2 objects of type line.

Входные параметры

свернуть все

Входные данные, заданные как вектор, матрица, многомерный массив, таблица или timetable.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | table | timetable

Рабочая размерность, заданная как положительный целочисленный скаляр По умолчанию islocalmax действует вдоль первой размерности, размер которого не равен 1.

Для примера, если A является матрицей, тогда islocalmax(A,1) действует вдоль строк A, вычисление локальных максимумов для каждого столбца.

islocalmax(A,2) действует вдоль столбцов A, вычисление локальных максимумов для каждой строки.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: TF = islocalmax(A,'MinProminence',2)
Опции данных

свернуть все

Точки выборки, заданные как разделенная разделенными запятой парами, состоящая из 'SamplePoints' и вектор. Точки выборки представляют x местоположения данных в осях A, и должен быть отсортирован и содержать уникальные элементы. Точки выборки не нужно равномерно отбирать. Вектор точек выборки по умолчанию [1 2 3 ...].

Примечание

Эта пара "имя-значение" не поддерживается, когда входные данные являются timetable. В Timetables всегда используется вектор времени строки в качестве точек выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы время в строке содержало требуемые точки выборки.

Пример: islocalmax(T,'SamplePoints',0:0.1:10)

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | datetime | duration

Табличные переменные для работы, заданные как разделенная разделенными запятой парами, состоящая из 'DataVariables' и один из опций в этой таблице. The 'DataVariables' значение указывает, какие переменные таблицы входа необходимо проверить на локальные максимумы. Тип данных, сопоставленный с указанными переменными, должен быть числовым или logical. Другие переменные в таблице, не заданные 'DataVariables' не работают, поэтому выходы содержат false значения для этих переменных.

ОпцияОписаниеПримеры
Имя переменной

Вектор символов или скалярная строка, задающая имя табличной переменной

'Var1'

"Var1"

Вектор имен переменных

Массив ячеек из векторов символов или строковых массивов, где каждый элемент является именем табличной переменной

{'Var1' 'Var2'}

["Var1" "Var2"]

Скаляр или вектор переменных индексов

Скаляр или вектор табличных переменных

1

[1 3 5]

Логический вектор

Логический вектор, элементы которого каждый соответствуют табличной переменной, где true включает соответствующую переменную и false исключает его

[true false true]

Указатель на функцию

Указатель на функцию, который принимает табличную переменную как вход и возвращает логический скаляр

@isnumeric

vartype индекс

Индекс таблицы, сгенерированный vartype функция

vartype('numeric')

Пример: islocalmax(T,'DataVariables',["Var1" "Var2" "Var4"])

Опции обнаружения экстремумов

свернуть все

Минимальная известность, заданная как разделенная разделенными запятой парами, состоящая из 'MinProminence' и неотрицательный скаляр. islocalmax возвращает только локальные максимумы, известность которых является по крайней мере заданным значением.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Окно Prominence, заданное как разделенная разделенными запятой парами, состоящая из 'ProminenceWindow' и положительный целочисленный скаляр, двухэлементный вектор положительных целых чисел, положительный скаляр длительности или двухэлементный вектор положительных длительностей. Значение задает окно соседних точек, для которого можно вычислить известность для каждого локального максимума.

Когда значение окна является положительным целым скалярным k, то окно центрируется вокруг каждого локального максимума и содержит k-1 соседних элементов. Если k ровен, то окно центрируется вокруг текущего и предыдущего элементов. Если локальный максимум находится в пределах плоской области, то islocalmax обрабатывает всю плоскую область как центральную точку окна.

Когда значение является двухэлементным вектором [b f] из положительных целых чисел, тогда окно содержит локальный максимум, b элементы назад и f элементы вперед. Если локальный максимум находится внутри плоской области, то окно запускается b элементы перед первой точкой области и заканчиваются f элементы после последней точки области.

Когда входные данные являются расписанием или когда 'SamplePoints' задается как datetime или duration вектор, значение окна должно быть типа duration, и окно вычисляется относительно точек выборки.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

Индикатор плоской области для, когда локальное максимальное значение повторяется последовательно, задается как разделенная разделенными запятой парами, состоящая из 'FlatSelection' и одно из следующих:

  • 'center' - Указание только центрального элемента массива плоской области как локального максимума. Элемент TF соответствующий центру плоского слоя равен 1 и равен 0 для остальных плоских элементов.

  • 'first' - Указание только первого элемента массива плоской области как локального максимума. Элемент TF соответствующий началу плоского слоя равен 1 и равен 0 для остальных плоских элементов.

  • 'last' - Указание только последнего элемента массива плоской области как локального максимума. Элемент TF соответствующий концу плоского слоя равен 1 и равен 0 для остальных плоских элементов.

  • 'all' - Все элементы массива плоской области указываются как локальные максимумы. Элементы TF соответствующие всем частям плоской равны 1.

При использовании 'MinSeparation' или 'MaxNumExtrema' Пары "имя-значение" точки с плоской областью совместно считаются одной максимальной точкой.

Минимальное разделение между локальными максимумами, заданное как разделенная разделенными запятой парами, состоящая из 'MinSeparation' и неотрицательный скаляр. Значение разделения определяется в тех же модулях, что и вектор точек выборки, который [1 2 3 ...] по умолчанию. Когда значение разделения больше 0, islocalmax выбирает наибольший локальный максимум и игнорирует все другие локальные максимумы в пределах заданного разделения. Этот процесс повторяется до тех пор, пока не будут обнаружены локальные максимумы.

Когда вектор точек выборки имеет тип datetime, значение разделения должно иметь тип duration.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

Максимальное количество обнаруженных максимумов, заданное как разделенная разделенными запятой парами, состоящая из 'MaxNumExtrema' и положительный целочисленный скаляр. islocalmax находит не более заданного числа наиболее заметных максимумов, которое является длиной рабочей размерности по умолчанию.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

Локальный индикатор maxima, возвращенный как векторный, матричный или многомерный массив. TF - тот же размер, что и A.

Типы данных: logical

Известность, возвращенная как векторный, матричный или многомерный массив. P - тот же размер, что и A.

Если входные данные имеют целый тип со знаком или без знака, то P - беззнаковое целое число.

Подробнее о

свернуть все

Известность локального максимума

Известность локального максимума (или пика) измеряет, как пик выделяется относительно его высоты и местоположения относительно другого peaks.

Чтобы измерить известность пика, сначала протяните горизонтальную линию от пика налево и справа от пика. Найдите, где линия пересекает данные слева и справа, которые будут либо другим пиком, либо концом данных. Отметьте эти местоположения как внешние конечные точки левого и правого интервалов. Далее найдем самый низкий овраг в обоих интервалах. Возьмите большую из этих двух оврагов и измерьте вертикальное расстояние от оврага до вершины. Это расстояние является известностью.

Для вектора xсамая большая известность - самое большее max(x)-min(x).

Расширенные возможности

.
Введенный в R2017b