получить данные, используя индексы данных столбцов - PullRequest
0 голосов
/ 13 декабря 2018

у меня есть данные A = (3,5,3,1,4) в столбце и

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

И я хочу: как в первом элементе 3, и для этого я хочу получитьпервый элемент столбца 3 строки 1 из B, который равен 9. Второй элемент A равен 5, и для этого я хочу получить 2-й элемент столбца 5 и строку 2 из B, который равен 7, и выполнить процесс для всех остальныхэлементы.как это сделать в Matlab?необходимые элементы выделены жирным шрифтом и подчеркнуты.Желаемый вывод [9,7,1,4,3]

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

если я прочитал хорошо, вы хотите заменить элементы.Это довольно просто A(1)=B(1,3) A(2)=B(2,5)

Так что после того, как вы объявили два вектора, вы можете обрабатывать их, заменяя отдельные компоненты.В общем, когда у вас есть одномерные векторы, вы можете получить доступ к позиции его компонента, только объявив положение внутри скобок, как я это сделал для A. Когда вы сталкиваетесь с ситуацией, как в B, Если вы помните линейную алгебру и матрицу впод общим B (a, b) подразумевается элемент матрицы B, помещенный в строку a и столбец b, поэтому для доступа к этому элементу необходимо указать строку и столбец.

0 голосов
/ 13 декабря 2018

Прочтите о линейных индексах.

sub2ind преобразует из [row col] в индекс.

Cols=[ 3,5,3,1,4 ];
Rows=1:length(Cols);

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

Indexes=sub2ind(size(B),Rows,Cols);
Vals=B(Indexes)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...