How to set ranges for 2 different variables in the same loop?
4 views (last 30 days)
Show older comments
Siobhan Beatty
on 20 May 2019
Commented: Alex Mcaulley
on 20 May 2019
I have a set of x and y values and I need to isolate and substitute the values which are within the range to a formula that I've already typed out, but it keeps coming up with the "Operands to the || and && operators must be convertible to logical scalar values."
This is the loop section of code =
while ((x < 40) & (x > 15) && (y < 25) & (y > 5))
deltaLdeltax = ((-(40 - x))/sqrt(((40-x)^2)+((y-10)^2)))+((x-15)/sqrt(((x-15)^2)+((y-25)^2)))+((x-10)/sqrt(((x-10)^2)+((y-5)^2)))
deltaLdeltay = ((y-10)/sqrt(((40-x)^2)+((y-10)^2)))+((-(25-y))/sqrt(((x-15)^2)+((y-25)^2)))+((y-5)/sqrt(((x-10)^2)+((y-5)^2)))
end
0 Comments
Accepted Answer
Alex Mcaulley
on 20 May 2019
Edited: Alex Mcaulley
on 20 May 2019
You don't need a loop:
x = randi(100,1,100);
y = randi(100,1,100);
idx = ((x < 40) & (x > 15) & (y < 25) & (y > 5));
x = x(idx);
y = y(idx);
deltaLdeltax = ((-(40 - x))./sqrt(((40-x).^2)+((y-10).^2)))+((x-15)./sqrt(((x-15).^2)+((y-25).^2)))+((x-10)./sqrt(((x-10).^2)+((y-5).^2)));
deltaLdeltay = ((y-10)./sqrt(((40-x).^2)+((y-10).^2)))+((-(25-y))./sqrt(((x-15).^2)+((y-25).^2)))+((y-5)./sqrt(((x-10).^2)+((y-5).^2)));
4 Comments
Alex Mcaulley
on 20 May 2019
It is just an example for x and y (row vectors of random numbers between 1 and 100). You have to use your x and y variables.
More Answers (1)
KSSV
on 20 May 2019
while ((x < 40) && (x > 15) && (y < 25) && (y > 5))
deltaLdeltax = ((-(40 - x))/sqrt(((40-x)^2)+((y-10)^2)))+((x-15)/sqrt(((x-15)^2)+((y-25)^2)))+((x-10)/sqrt(((x-10)^2)+((y-5)^2)));
deltaLdeltay = ((y-10)/sqrt(((40-x)^2)+((y-10)^2)))+((-(25-y))/sqrt(((x-15)^2)+((y-25)^2)))+((y-5)/sqrt(((x-10)^2)+((y-5)^2)));
end
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!