Check values under a certain threshold with an undefined window
5 次查看(过去 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 中查找有关 Creating and Concatenating Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!