Clear Filters
Clear Filters

Comparing my array to two variables

3 views (last 30 days)
Hello
I'm trying to compare my array values ( numerical ) to two variables. For example i would like any number in my array greater than 2 to be rounded to two, and any number less than 0 rounded to 0. I can't seem to find a simple expression to do this. So i would like to compare all numbers in the array to those two conditions and then round them to their respective closest number. How do i possible go about this?
  1 Comment
Image Analyst
Image Analyst on 25 Aug 2020
Original question in case he deletes is like he's done with other posts:
Hello
I'm trying to compare my array values ( numerical ) to two variables. For example i would like any number in my array greater than 2 to be rounded to two, and any number less than 0 rounded to 0. I can't seem to find a simple expression to do this. So i would like to compare all numbers in the array to those two conditions and then round them to their respective closest number. How do i possible go about this?

Sign in to comment.

Accepted Answer

KSSV
KSSV on 29 Sep 2016
% Generate random data between -3 and 3
a = -3;
b = 3;
r = (b-a).*rand(100,1) + a;
r(r>2) = 2 ; % Change numbers greater then 2
r(r<0) = 0 ;% Change numbers less then 0
Read about find, round, ceil, floor.
  2 Comments
Matlabhelp
Matlabhelp on 29 Sep 2016
Thank you for you help :)
Stephen23
Stephen23 on 29 Sep 2016
Edited: Stephen23 on 29 Sep 2016
Note that this answer does not mention the simplest solution. See my answer.

Sign in to comment.

More Answers (1)

Stephen23
Stephen23 on 29 Sep 2016
Edited: Stephen23 on 29 Sep 2016
Simply use max and min, each with two arguments:
>> M = randi([-5,5],6)
M =
-5 3 5 -5 -5 -2
2 3 2 -4 -1 -1
-5 2 3 -4 0 -5
-5 -4 -1 -1 -1 5
0 2 -1 4 2 -4
-4 0 4 3 1 -4
>> min(2,max(0,M))
ans =
0 2 2 0 0 0
2 2 2 0 0 0
0 2 2 0 0 0
0 0 0 0 0 2
0 2 0 2 2 0
0 0 2 2 1 0

Community Treasure Hunt

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

Start Hunting!