Я написал алгоритм, который находит локальные максимумы и минимумы в сигнале.
[id_max, id_min] = find_max_min(signal);
Теперь я хотел бы проверить: соблюдается ли чередование максимумов и минимумов
i.e. id_max(1)<id_min(1)<id_max(2)<id_min(2)<...
we could start with a minimum..this is not known
Предположим, что:
id_max = [1 3 5 7 10 14 20];
id_min = [2 4 6 8 16 19];
Я хотел бы иметь 2 вектора missing_max
missing_min
с указанием местоположения недостающих максимумов и минимумов.
Отсутствующий максимум (минимум) возникает, когда между двумя последовательными минимумами (максимумами) в id_min (id_max)
нет максимума (минимума).
В этом примере отсутствует максимум в 7-й позиции id_max, потому что в id_min есть два последовательных значения (16 19) без максимума между ними.
Тогда у нас есть
missing_max = [7]
missing_min = [5]
поскольку
id_max = [1 3 5 7 10 14 X 20];
id_min = [2 4 6 8 X 16 19];
(с помощью X я отметил пропущенные значения)
Если чередование правильное, векторы должны быть пустыми. Можете ли вы предложить эффективный способ сделать это без циклов?
заранее спасибо
missing_min
должно быть[6]
, согласны? - person   schedule 25.06.2014id_min=[2 4 6 8 10]
иid_max=[12 14]
. Что будетmissing_max
иmissing_mim
- person   schedule 25.06.2014id_max
нет 3-й и 4-й позиции, а вid_min
нет 6-й позиции, поэтому значение, отсутствующее между k-1 и k позициями, не работает. Не могли бы вы рассказать, как вы пришли к этим ценностям? - person   schedule 25.06.2014missing_max
иmissing_in
(потом я это исправлю). Что ты говоришь? :-) - person   schedule 25.06.2014