how to use "for loop" for firstly entering into each rectangular grids then find minimum distance b/w nodes in each grid
Show older comments
here i want to apply for loop for each 16 rectangular grids then after entering into the grid i want to find eucledian distance b/w the nodes present in that grid
3 Comments
KSSV
on 25 Aug 2016
You have to clarify many things: There is a grid with 16 elements (boxes). Inside each box there are points..you want to find the distance between what and what?
kiranpreet kaur
on 25 Aug 2016
kiranpreet kaur
on 25 Aug 2016
Answers (1)
KSSV
on 26 Aug 2016
close all;
clc;
ngrid=4;%no. of grids
N=200;
R=0.5;
sink.x=3.1;
sink.y=3.1;
x = linspace(0, 4, ngrid+1);
E=0.5;
[X,Y] = meshgrid(x);
figure(1)
plot(X,Y,'k')
hold on
plot(Y,X,'k')
hold on
ngrid = 4;
coords = rand(N,2) * ngrid;
nodes = struct('x',coords(:,1),... %# Assign x coordinates
'y',coords(:,2),... %# Assign y coordinates
'energy',E);
scatter(coords(:,1),coords(:,2));
set(gca, 'XTick', 1:ngrid+1, 'YTick', 1:ngrid+1)
axis square
plot(nodes.x,nodes.y,'o','LineWidth',2, 'MarkerEdgeColor','m','MarkerFaceColor','m','MarkerSize',3)
plot(sink.x,sink.y,'d','LineWidth',2, 'MarkerEdgeColor','r','MarkerFaceColor','y','MarkerSize',12)
grid on;
%%Get nodes inside for each box
P1 = cell(4,4) ;
for i = 1:4
for j = 1:4
A = [X(i,j) Y(i,j)] ;
B = [X(i+1,j+1) Y(i+1,j+1)] ;
idx = find(nodes.x >= A(1) & nodes.x <B(1)) ;
idy = find(nodes.y >= A(2) & nodes.y <B(2)) ;
id = intersect(idx,idy) ;
P1{i,j} = [nodes.x(id) nodes.y(id)] ;
% plot points inside first box
plot(P1{i,j}(:,1),P1{i,j}(:,2),'*g')
end
end
I have added a code to separate the points in each box.....P1 is a cell..it has all the points associated w.r.t box.
P{1,1} gives points inside first box.....P(3,2} gives points inside 3 row 2 column box....
Good luck
1 Comment
kiranpreet kaur
on 28 Aug 2016
Categories
Find more on Language Support 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!