Я хочу создать сетку с двумя столбцами 20x20 (x, y) с разрешением 0,2 на конкретные заказы.Сначала я знаю, как создать сетку, каждый раз фиксируя y и заполняя x следующим образом:
[y, x] = meshgrid(0:0.2:20);
grid = [x(:) y(:)];
Порядок, в котором я хочу, чтобы моя сетка был следующим:
- Начиная сy = 0 и x = 0, исправьте y и увеличивайте x на 2, пока не будет достигнут конец этой линии x.
- Увеличьте y на 2 и повторите вышеописанное.
-После достижения конца сетки, (20,20), начните снова с y = 0, но x = 0.2 и увеличивайте y на 2 каждый раз, когда вы достигнете конца x.
-После заполнения всех этих строк начните выше с y = 0.2 и x = 0
Точки будут в следующем порядке
(0,0) (2,0) (4,0) ... (20,0), (0,2) (2,2) (4,2) ... (20,2), ... (0,20) (2,20) (4,20) ... (20,20), (0,2,0) (2,2,0) (4,2,0) ... (18,2,0), (0,2,2) (2,2,2)(4.2,2) ... (18,2,2), ... (0,2,20) (2,2,20) (4.2,20) ... (18,2,20) .... (0,0,2) (2,0,2) (4,0,2) ... (20,0,2), (0,2,2) (2,2,2) (4,2,2) ... (20,2,2), ...
Я знаю, что это трудно объяснить, но этот код делает трюк
grid = [];
for j = 0:0.2:1.8
for i = 0:0.2:1.8
for v = j:2:20
for u = i:2:20
x = [u v];
spot = [grid;x];
end
end
end
end
Также я могу сделать то же самое, но начиная с (20,20) и переходя справа налево
spot=[];
for j = 20:-0.2:18.2
for i = 20:-0.2:18.2
for v = j:-2:0
for u = i:-2:0
x = [v u];
spot = [spot;x];
end
end
end
end
Мой первый вопрос: есть ли более эффективный способ написания этого кода?
Второй вопрос: я хочу разделить эту сетку на две части.Часть 1 начинается с (0,0) и идет справа налево (как первый код выше) и заканчивается на (10,10).Часть 2 начинается с (20,20) и идет слева направо (второй код) и заканчивается на (10,10).
Единственный способ, которым я могу сделать это сейчас, - создать вышеуказанные сетки и затем вручную удалить ненужные строки