필터 지우기
필터 지우기

finding index of a function

조회 수: 1 (최근 30일)
shobhit mehrotra
shobhit mehrotra 2015년 1월 27일
답변: Thomas Feja 2015년 1월 27일
Hello, I have the following code, When the cell array is created it contains values of AA when the condition is meet. I want to also create a cell array of the index of AA, AA(n) n = 1:length AA.
AA = [ 1 2 3 5 7 10 9 11 13 14 17 19 17 22 25];
data = mat2cell(AA, 1, diff([0 find(diff(AA) < 0) numel(AA)]))
Thanks!
  댓글 수: 1
shobhit mehrotra
shobhit mehrotra 2015년 1월 27일
Im trying to create another data cell array with indices that meet the condition. dataind = [(1, 2, 3, 4, 5, 6), (7,8,9, 10, 11, 12), (13,14,15)]

댓글을 달려면 로그인하십시오.

채택된 답변

Thomas Feja
Thomas Feja 2015년 1월 27일
If you want go for a single line solution, this will work:
data = arrayfun(@(x,y)x:y,[1,1+find(diff(AA)<0)],[find(diff(AA)<0),numel(AA)],'UniformOutput',false)
This is compact but hard to read. So you might prefer this solution:
idxNegDiff = [find(diff(AA)<0),numel(AA)];
start = 1;
for idx = 1:length(idxNegDiff)
c{idx} = start:idxNegDiff(idx);
start = idxNegDiff(idx)+1;
end
Either way you can verify the result using:
celldisp(c)

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by