exponenta event banner

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.

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

свернуть все

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

Типы данных: 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. В расписаниях всегда используется вектор времени строки в качестве точек выборки. Чтобы использовать различные точки выборки, необходимо отредактировать расписание так, чтобы время строки содержало нужные точки выборки.

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

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

Переменные таблицы для работы, указанные как пара, разделенная запятыми, состоящая из 'DataVariables' и один из вариантов в этой таблице. '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

Окно выделения, указанное как пара, разделенная запятыми, состоящая из '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

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

свернуть все

Индикатор локальных максимумов, возвращаемый как вектор, матрица или многомерный массив. TF имеет тот же размер, что и A.

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

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

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

Подробнее

свернуть все

Заметность локального максимума

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

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

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

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

.
Представлен в R2017b