Check values under a certain threshold with an undefined window
8 ビュー (過去 30 日間)
古いコメントを表示
Hello all,
I am new to Matlab. I have a large vector called A (over 400000 values). I would like to find the maximum value of that vector then look for values that are 10 % around the maximum.
Here is an example:
A=[9 10 47 50 49 48 2 46];
mymax=max(A); % in this case mymax=50
mincondition=mymax*0.9; % mincondition=45
Then I should be able to get all values around A(4)=50 that are over mincondtion. The window of considered values stops when mincondition is no longer surpassed. In this case, the results would be:
res=[47 50 49 48];
Can anyone please help me?
Thank you.
2 件のコメント
David Fletcher
2018 年 4 月 13 日
Why isn't the 46 (last element) included in res? (sorry I didn't really understand what you mean by 'the window of considered values stops when mincondition is no longer surpassed' - I am just assuming that you want everything from A that is over mincondition)
採用された回答
David Fletcher
2018 年 4 月 13 日
A=[9 10 47 50 49 48 2 46];
mymax=max(A); % in this case mymax=50
mincondition=mymax*0.9; % mincondition=45
indexer=A>mincondition
[start,stop]=regexp(char(indexer+48),'1+')
res=A(indexer(1:stop(1)))
It's probably worth checking it works thoroughly - I kept getting disturbed by people actually wanting me to do some work while I was writing it.
その他の回答 (1 件)
Image Analyst
2018 年 4 月 13 日
Here's one way using morphological reconstruction:
A = [9 10 47 50 49 48 2 46];
mask = A >= 0.9 * max(A)
indexes = imreconstruct(A == max(A), mask) % Requires Image Processing Toolbox.
finalValues = A(indexes)
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Debugging and Analysis についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!