MATLAB Operation question.

1 view (last 30 days)
Kyle
Kyle on 7 Jun 2011
HI,
I have an array:
angle =
Columns 1 through 5
174.8310 -4.9214 -5.0368 -5.0544 -4.2956
Columns 6 through 9
-2.9111 -5.0442 -5.7359 -5.0155
I would like to filter off the number that has less occurrence( Eg. 174.831 , -2.9111) while keeping those value that repeats.
Is there any matlab function that can do that?
Thanks

Accepted Answer

the cyclist
the cyclist on 7 Jun 2011
% Identify the elements that are too high or too low
isTooHi = (angle>-4.5);
isTooLo = (angle<-5.5);
% Remove them
angle(isTooHi|isTooLo) = [];
  1 Comment
Kyle
Kyle on 8 Jun 2011
Thanks a lot.
you given me an idea. I slightly modify ur code to suite my use.
angle=[-2.9111 -5.0442 -5.7359 -5.0155 174.8310 -4.9214 -5.0368 -5.0544 -4.2956];
b=round(angle);
c=mode(b);
isTooHi = (angle>(c+1));
isTooLo = (angle<(c-1));
angle(isTooHi|isTooLo) = []

Sign in to comment.

More Answers (1)

John D'Errico
John D'Errico on 7 Jun 2011
NONE of these numbers are repeated in your example! Unless you define what numbers are desirable, MATLAB cannot know that one number is better than another when all are distinct. MATLAB cannot read your mind.
My guess is you are looking for an outlier detection/removal scheme. If so, then you need to either define it in terms of the expected distribution of these numbers (i.e., a normal distribution) or do so using some non-parametric scheme.
  1 Comment
Kyle
Kyle on 7 Jun 2011
Thanks for the reply.
Sorry i should be more specific. For my example i would like to keep all those value that are -5 +/- 0.5 while eliminates others outside this range.
Other array would have maybe a lot value near 7 while a few value is far off(like 1, -20,...)

Sign in to comment.

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!