(простая?) ошибка с findpeaks и циклом if

Я пытаюсь найти локальные максимумы набора данных, используя функцию findpeaks(), и пока у меня есть этот код:

[pks, locs] = findpeaks(signal);
max_times = zeros(size(locs));

if n = 1:size(locs);
max_times(n) = (times(locs(n)));
end

Что я пытаюсь сделать? Итак, у меня есть набор данных сигнала и соответствующее время. Я хочу получить локальные максимальные значения и вывести два вектора; максимальные значения сигнала и время их появления.

Как я это делаю? Я использую функцию findpeaks, чтобы найти пики (pks) и местоположение (locs) максимумов. Затем я настраиваю пустой массив той же длины, что и вектор locs, а затем использую цикл if, чтобы заполнить пустой вектор max_times (n) временем, когда происходят максимумы

Проблема? Я продолжаю получать сообщение об ошибкеExpression or statement is incomplete or incorrect. о моем цикле if. Я не понимаю, что это значит/как мне решить эту проблему/отредактировать мой код, чтобы заставить его делать то, что я хочу?

Спасибо за любую помощь!


person user3168953    schedule 16.01.2014    source источник


Ответы (1)


То, что вы думаете, совершенно неверно.

If это не цикл, а условный оператор
то, что вам нужно здесь, это цикл for

for n = 1:size(locs)
    % your code
end

так же times возьми два параметра и ты сам придумай какой он должен быть

person xor    schedule 16.01.2014