Generating empty interval of points

2 views (last 30 days)
Dear All,
I want to generate points in the interval [20,80] and have the interval [40,60] as an empty area. I wrote this code but I don't now how to complete it. I'd appreciate any help.
LB=20;UB=80;
x = LB+(UB-LB)*rand(50,1);
y =LB+(UB-LB)*rand(50,1);
if x>40 | x<60| y>40 | y<60;
[x]==0;[y]==0;
plot(x,y, '.')
but it gives an error.
Regards

Accepted Answer

Star Strider
Star Strider on 14 Jan 2015
This seems to work:
LB=20;UB=80;
x = LB+(UB-LB)*rand(50,1);
y = LB+(UB-LB)*rand(50,1);
idx = [((x > 40) & (x < 60)) | ((y > 40) & (y < 60))];
x(idx) = [];
y(idx) = [];
figure(1)
plot(x, y, '+')
grid
The ‘idx’ variable tests for the conditions and creates a logical vector then used to assign the elements of ‘x’ and ‘y’ to ‘empty’ rather than zero. The plot shows that there are no points in the area you want cleared.
  5 Comments
imola
imola on 15 Jan 2015
Thanks Star, that's fine, it works perfectly .
Regards

Sign in to comment.

More Answers (1)

Roger Stafford
Roger Stafford on 14 Jan 2015
Do this:
LB=20;UB=80;
x = LB+(UB-LB)*rand(50,1);
y = LB+(UB-LB)*rand(50,1);
t = ((x<=40)|(x>=60)) & ((y<=40)|(y>=60));
x = x(t);
y = y(t);
plot(x,y,'.')
  1 Comment
imola
imola on 14 Jan 2015
Dear Roger, Thanks for you and for star for answer me, I realize that I didn't explain what I want exactly, forgave me both of you, with your code I got four areas of points separate of each other while I need a whole area of points and an empty area in the middle, is like an empty square inside a big square of points, so I tried to use
t = ((x<=40)||(x>=60)) && ((y<=40)||(y>=60));
but its wrong, could you please sorted to me.
Regards,
Imola.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!