2016-07-13 1 views
1

Как я мог построить равные промежутки в квадрате в matlab. Как показано нижеПлоские точки с равным расстоянием внутри квадрата (n x n)

      . . . . 
          . . . . 
          . . . . 
          . . . . 

На рисунке ниже представлен квадрат размера 4x4. Я хотел бы ссылаться на каждую точку и хранить в переменной [Точка (я) .xcord, точка (I) .ycord] и участок, как показано ниже:

For i=1:1:16 
Point(i).xcord = <What expression goes here> 
Point(i).ycord = <what expression goes here> 
plot(Point(i).xcord, Point(i).ycord) 

Для того чтобы получить выходной сигнал в виде сетки, как показанный выше, может кто-нибудь объяснить простой способ сделать это.

+1

Пожалуйста, не добавляйте обратно теги, которые были удалены без уважительной причины. Этот вопрос не имеет ничего общего с развертыванием или разреженными матрицами (пожалуйста, прочитайте описания тегов перед их использованием). – horchler

ответ

2

Вы можете использовать ndgrid следующим образом:

N = 4; % Square size 
[xcord, ycord] = ndgrid(1:N); % generate all combinations. Gives two matrices 
plot(xcord(:), ycord(:), '.') % plot all points at once 
axis([0 N+1 0 N+1]) % set axis limits 
axis square % make actual sizes of both axes equal 

xcord, ycord матрицы, которые содержат координаты точек. Это быстрее, чем использование массива struct, как в вашем коде. Вы можете указать их, например, xcord(2,3).

Если вам необходимо преобразовать в массив структуры, использовать

Point = struct('xcord', num2cell(xcord(:)), 'ycord', num2cell(ycord(:))); 
+0

См. Отредактированный ответ –

+0

Это работает! Пожалуйста, Что это могло бы быть похоже на использование структуры, как показано в вопросе? В нескольких протоколах wsn узлы датчиков ссылаются таким образом. Спасибо, Луис! – Abdulhameed

+0

@Abdulhameed Я добавил строку для преобразования, см. Отредактированный ответ –