Підрахунок числа піків сигналу в matlab навколонауковий софт

Дан синусоїдальний високочастотний сигнал промодулірованний сигналом маятника. (Тобто згустки, невелике розрідження в точці зупинки і знову згустки)
Завдання - порахувати кількість максимумів в "згустках".
Я хотів написав програму на Matlab, яка б збільшувала K, як тільки з'являвся новий максимум і при цьому додавала до змінної ітерації 10, оскільки під мої умови (я брав околиця точки максимуму) потрапляли відразу 2-3 точки, але цього не вийшло так як matlab в циклі використовує масив i, якщо вводити меншу околиця, то програма пропускала деякі точки з похибкою 50%.


for # 40; i = 1: 1: 100000 # 41;
if abs # 40; y # 40; i # 41; # 41;<0.15 % окрестность нуля, в которую попадает значение сигнала
% Тут все одно вважати максимуми або переходи через нуль
% Так як максимуми = # 40; число переходів через нуль # 41; / 2
k = k + 1
i = i + 10
end
end

1) як можна реалізувати такий алгоритм?

2) як в циклі FOR організувати запис в масив всіх i-координат максимумів? (Matlab же працює з фіксованими масивами - а я не знаю скільки максимумів у мене буде)


3) чи є якась фунция пошуку максимумів?

Можу запропонувати оригінальний алгоритм без циклів:

Вважаю, що в масиві A вже містяться значення вашої функції. Тоді порахуємо кількість перетинів осі абсцис так:

Красиве рішення, правда?

я просто в дикому захваті від цього алгоритму.
Це ви звідки вичитали?
але все ж питання з приводу функції перестрибування ітерацій в циклі, як це можна зробити в будь-якій мові програмування

for # 40; i = 1: 100 # 41;
if бла бла бла i = i + 10
end

Це ви звідки вичитали?


відразу вичитав. - Я його придумав, коли побачив Вашу задачу

але все ж питання з приводу функції перестрибування ітерацій в циклі,

У Матлаб "нерозумно" стрибати в циклі - треба Вам брати кожне десяте значення, так і напишіть A (1: 10: end)

Та й взагалі Матлаб - така мова, що цикли можна використовувати рідко і працювати при цьому буде швидше, ніж з ними, часом у рази