Матричное индексирование с большей матрицей

Я пытаюсь понять какой-то старый код от предшественника, и у меня возникают проблемы с индексацией матрицы определенного типа:

У меня есть большая матрица A с помеченными областями (соседними элементами, имеющими общее число). Теперь у меня есть вторая матрица B=[0 1 2 3 ... n], где n – количество элементов. Затем мы обращаемся к output = B(A+1).
Теперь я не совсем понимаю, что происходит, когда Я пытаюсь индексировать меньшую матрицу с большей. А то я не вижу, что output чем-то отличается от моей матрицы A.

Кто-нибудь может помочь мне с моей путаницей? Спасибо!


person DarkCell    schedule 03.12.2014    source источник


Ответы (1)


Индексация небольшого вектора с использованием большой матрицы — это (хороший) способ выполнения операции поиска в таблице: то есть output создается путем замены каждого элемента A элементом B(A+1), результат имеет тот же размер, что и A.
В вашем конкретном примере, поскольку B( A(ii,jj)+1 ) == A(ii,jj) для всех ii и jj, эта конкретная операция поиска не имеет смысла.

Вы можете попробовать разные B векторы и посмотреть, как это изменение повлияет на output.

person Shai    schedule 03.12.2014
comment
А, спасибо. Можете ли вы объяснить, что на самом деле делает Matlab, когда я индексирую меньший вектор с большей матрицей? - person DarkCell; 03.12.2014
comment
@DarkCell результат B(A+1) назначает для каждого элемента A вывод B(A(ii,jj)+1). вывод, таким образом, имеет размер A. - person Shai; 03.12.2014