Мне нужна помощь в решении проблемы индексирования. Назначенная задача гласит: Две матрицы (x и y) дают координаты для формирования матрицы B из матрицы A. Произведите матрицу B, которая содержит значения A в данных координатах по x и y. Например:MATLAB: Матрица, содержащая значения другой матрицы по определенным индексам
x = [1 1 1; 2 2 1]
y = [1 2 1; 3 2 4]
%This would read as (1,1),(1,2),(1,1),(2,3),(2,2),(1,4)
% Given matrix:
A = [6 7 8 9; 10 11 12 13];
%This would give us this answer for B (using the coordinate scheme above):
B=[6 7 6; 12 11 9];
Я предполагаю, что мне нужно использовать функцию find
в сочетании с sub2ind
функции, но я не уверен на 100%, как перевести это в рабочий код. Единственное, что я могу думать о том, чтобы сделать что-то вроде этого:
B=((x(1),(y(1)), (x(2),y(2)).......
Но это будет работать только для определенной матрицы выше, а не случайным образом матрицу. Я попытался найти подобную проблему на сайте, но я не смог ее найти. Ваша помощь будет действительно оценена!
Попробуйте использовать петлю. Иногда самый простой подход - лучший. –
Вы правы, 'sub2ind' был бы полезен здесь, а также' reshape', если хотите. Вам не нужен цикл - это можно сделать на одной строке. Читайте об [линейном индексировании здесь] (http://www.mathworks.com/help/matlab/math/matrix-indexing.html#f1-85511), чтобы узнать, можете ли вы понять, что делать с выходом из 'ind2sub '. – horchler
На это ответили во многих вопросах: _e.g_: [Выбор элементов из массива в MATLAB] (http://stackoverflow.com/questions/13023997/), [Изменение нескольких элементов (из известных координат) матрицы без a for loop] (http://stackoverflow.com/questions/12294232), [MATLAB sub2ind using vectors] (http://stackoverflow.com/questions/16530668) и многое другое ... –