Преобразование координат (x, y) в Matlab

В Matlab у меня есть эта матрица:

Grid с размерами [x,y]

Я преобразовал его в матрицу с одной строкой

Row с размерами [1,x*y].

Как узнать, где найти координату Grid(x,y) в матрице Row(1,?), и наоборот? Есть ли для этого функция в Matlab?


person Community    schedule 04.03.2012    source источник
comment
@JohanLundberg, вы имеете в виду их ценности? Они различаются, но в настоящее время размеры x = 1000 и y = 1000.   -  person    schedule 04.03.2012
comment
Хорошо, я уже нашел, как конвертировать из Grid в Row: (y-1) * xWidth + x. Где xWidth - общая ширина Grid, а x - координата. Я до сих пор не знаю, как конвертировать обратно.   -  person    schedule 04.03.2012


Ответы (3)


Функции sub2ind и _ 2_ должно быть тем, что вы ищете.

person Ian Hincks    schedule 04.03.2012

Да, функции sub2ind и ind2sub - это то, что вы ищете. Думаю.

person High Performance Mark    schedule 04.03.2012

Не могли бы вы предоставить дополнительную информацию о том, как вы «конвертируете матрицу»?

Стандартный способ - использовать B = reshape(A,m,n), который можно увидеть в документации Matlab для http://www.mathworks.com/help/techdoc/ref/reshape.html

Изменить форму:

возвращает матрицу B размером m x n, элементы которой берутся по столбцам из A. Если A не имеет m * n элементов, возникает ошибка.

Например,

 a = [1,2,3;4,5,6;7,8,9]

     1     2     3
     4     5     6
     7     8     9


reshape(a,9,1)

     1
     4
     7
     2
     5
     8
     3
     6
     9

Таким образом, можно использовать sub2ind (matrixSize, rowSub, colSub), т.е.

sub2ind([3,3], 2, 3)

Который, как ожидается, произведет 8

person Cory Dolphin    schedule 04.03.2012
comment
Я использовал reshape, как вы описали. - person ; 04.03.2012