В Matlab у меня есть эта матрица:
Grid
с размерами [x,y]
Я преобразовал его в матрицу с одной строкой
Row
с размерами [1,x*y]
.
Как узнать, где найти координату Grid(x,y)
в матрице Row(1,?)
, и наоборот? Есть ли для этого функция в Matlab?
В Matlab у меня есть эта матрица:
Grid
с размерами [x,y]
Я преобразовал его в матрицу с одной строкой
Row
с размерами [1,x*y]
.
Как узнать, где найти координату Grid(x,y)
в матрице Row(1,?)
, и наоборот? Есть ли для этого функция в Matlab?
Да, функции sub2ind
и ind2sub
- это то, что вы ищете. Думаю.
Не могли бы вы предоставить дополнительную информацию о том, как вы «конвертируете матрицу»?
Стандартный способ - использовать 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
reshape
, как вы описали.
- person ; 04.03.2012
Grid
вRow
:(y-1) * xWidth + x
. Где xWidth - общая ширинаGrid
, а x - координата. Я до сих пор не знаю, как конвертировать обратно. - person   schedule 04.03.2012