Generating empty interval of points

2 visualizzazioni (ultimi 30 giorni)
imola
imola il 14 Gen 2015
Commentato: Star Strider il 15 Gen 2015
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

Risposta accettata

Star Strider
Star Strider il 14 Gen 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 Commenti
imola
imola il 15 Gen 2015
Thanks Star, that's fine, it works perfectly .
Regards
Star Strider
Star Strider il 15 Gen 2015
My pleasure!

Accedi per commentare.

Più risposte (1)

Roger Stafford
Roger Stafford il 14 Gen 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 Commento
imola
imola il 14 Gen 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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by