2013-01-24 2 views
1

Я пытаюсь получить доступ к некоторым элементам массива в matlab. Рассмотрим приведенный ниже сценарий:Доступ к элементам массива в MATLAB

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

b = [1 2;2 1] 

Я хочу получить доступ к элементам с индексами (1,2) и (2,1) от. Я попытался использовать (b) и т. Д. Но ни один из методов, которые я пытался, не работал.

Как это можно сделать в Matlab без использования петель?

Также было бы полезно, если бы вы могли предложить несколько хороших книг для таких основ в Matlab.

+0

возможно дубликат [Как выбрать подматрицы (не в какой-либо определенной схеме) в Matlab] (http://stackoverflow.com/q/13091193/1336150). –

ответ

1

Во-первых, конвертировать индексы с индексами, используя sub2ind:

dim1sub = b(:,1); 
dim2sub = b(:,2); 

ind = sub2ind(size(a), dim1sub, dim2sub) 

После того, как индексы

a(ind) 

даст вам:

ans = 

    2 
    4 

См here для получения дополнительной информации о матричное индексирование.

+0

Или просто 'a (sub2ind (размер (a), b (:, 1), b (:, 2)))' в одной строке ... –

+1

@EitanT, конечно, но я обычно не предпочитаю, лайнеры при ответе на вопросы. Они кажутся более сложными, чем есть. – HebeleHododo

0

Matlab позволяет получить доступ к матрице с линейным индексом, который сканирует все столбцы матрицы. Так что в вашем случае (с 3x3) a(2,1)=a(2) и a(1,2)=a(4). Ответ, который предоставляет @HebeleHododo, принимает ваш индекс строки и столбца и преобразует их в линейный индекс в матрицу a. Просто помните, что если вы хотите индексировать матрицу разного размера, для этого вам понадобится другой линейный индекс.

Кроме того, есть много информации, доступной в Интернете, чтобы помочь обучения MATLAB в http://www.mathworks.com/help/matlab/index.html#language-fundamentals или вы можете ввести doc help в окно командной

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