2012-03-04 3 views
0

В Matlab У меня есть эта матрица:Преобразования (х, у) координаты в Matlab

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

Я видоизмененный его к одной матрице строк

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

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

+0

@JohanLundberg , вы имеете в виду их ценности? Они меняются, но в настоящее время размеры x = 1000 и y = 1000. –

+0

Хорошо, я уже нашел, как конвертировать из 'Grid' в' Row': '(y-1) * xWidth + x'. Где xWidth - общая ширина 'Grid', а x - координата. Я все еще не знаю, как конвертировать обратно. –

ответ

3

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

+0

+1 для ссылок на документацию, спасибо! –

3

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

0

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

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

переформовать:

возвращает м-по-п матрицу В, элементы которого берутся по столбцам из 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

+0

Я использовал 'reshape', как вы описали. –

Смежные вопросы