2012-06-21 7 views
0

Я пытаюсь выполнить петлю через meshgrid, чтобы создать матрицу векторов. Если у меня есть:loop through element of meshgrid matlab

[x,y] = meshgrid(1:2,1:2) 

может кто-то объяснить, пробегает по каждому элементу, чтобы получить матрицу, которая равна:

matrix = 
[x(1,1) y(1,1)] [x(1,2) y(1,2)] 
[x(2,1) y(2,1)] [x(2,2) y(2,2)] 

заранее спасибо

+0

трудно, когда я новичок в MATLAB! – brucezepplin

ответ

1

Если вы хотите 2x4 матрицу со значениями x и y чередующиеся, это будет работать:

matrix = zeros(2,4); 
matrix(:,[1 3]) = x; 
matrix(:,[2 4]) = y; 

Если вместо этого вы хотите 2x2x2 матрицы с x и y сложенными, используйте cat:

matrix = cat(3,x,y); 

Это сцепляет x и y вдоль третьего измерения.

+0

это отлично выглядит, как бы я сделал матрицу nxn. в настоящее время мой 74x74, но будут другие в зависимости от размеров изображения, которое я читаю ..... – brucezepplin

+0

В случае 74x74, каковы конечные размеры, на которые вы надеетесь? – tmpearce

+0

Пожалуйста, проверьте этот ответ, [очень краткий] (http://stackoverflow.com/questions/10743671/matlab-avoiding-loops-to-create-a-matrix-based-on-the-elements-of-other-vector ? RQ = 1) –

0

Может быть, вы могли бы организовать каждую пару координат в одну строку:

[x,y] = meshgrid(1:2,1:2) 
xy = [x(:) y(:)]; 

Таким образом:

>> xy = 
    1  1   %# xy(1,:) = [x(1,1),y(1,1)] 
    1  2   %# xy(2,:) = [x(2,1),y(2,1)] 
    2  1   %# xy(3,:) = [x(1,2),y(1,2)] 
    2  2   %# xy(4,:) = [x(2,2),y(2,2)]