How to find fifth value after somewhere in a series OR the end of the series, whichever comes first?

I have a set of data for which I want to find the minimum, then take a range from 5 values either side of this. I have done this using the following:
xrangemin=xdata(find(xdata==xdata(ydata==min(ydata))-5):find(xdata==xdata(ydata==min(ydata))+5));
This works, UNLESS the min(ydata) is within 5 values of either end of dataset, in which case it returns [](0x1).
Is there a way to say to matlab 'find the fifth value before\after this one OR the first/last one whichever you find first'?
Thanks very much

 採用された回答

Yona
Yona 2014 年 8 月 27 日
you can add max from 1 and 5 before the min and the min from end and 5 after the min.
xrangemin=xdata(max(1,find(xdata==xdata(ydata==min(ydata))-5)):min(end,find(xdata==xdata(ydata==min(ydata))+5));

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeTime Series Objects についてさらに検索

質問済み:

2014 年 8 月 27 日

コメント済み:

2014 年 8 月 27 日

Community Treasure Hunt

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

Start Hunting!

Translated by