필터 지우기
필터 지우기

How to efficiently find maximum of selected indices of an array in MATLAB?

조회 수: 4 (최근 30일)
Let us say we have the vectors: w, s_on, and s_off. s_on and s_off have the ascending indices of the onset and offset of an event. We need to find the maximum value in during each event. How can we do it without using loop. for example we may have the following values:
s_on = [5 19 78 101];
s_off = [10 28 97 152];
w = rand(1,200);
The following code does not work:
pv = max(w(s_on(1:end):s_off(1:end)))

채택된 답변

Guillaume
Guillaume 2018년 4월 11일
You don't have a choice, a loop is required for that. Either an explicit one:
pv = zeros(size(s_on));
for idx = 1:numel(s_on)
pv(idx) = max(w(s_on(idx):s_off(idx)));
end
Or through an arrayfun:
pv = arrayfun(@(s, e) max(w(s:e)), s_on, s_off);
It is likely that the explicit loop will be faster.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by