Доступ к значениям с использованием подписок без использования sub2ind - PullRequest
6 голосов
/ 18 июля 2009

Рассмотрим матрицу M и набор индексов, хранящихся в столбцах I и J . Мне нужно получить доступ к элементам, обозначенным I & J, без преобразования их в линейные индексы (т. Е. Используя sub2ind ). Э.Г.

M = [1 2 3;4 5 6;7 8 9];
I = [1 1 1];
J = [1 2 3];

VALS = [1 2 3];

Кроме того, выполнение следующих действий неосуществимо, поскольку I & J огромный :

VALS = diag(M(I,J));

И для демонстрации, это не , что я ищу,

VALS = M(sub2ind(size(M),I,J));

По сути, sub2ind, похоже, отнимает много времени, и сейчас я ищу способы доступа к этим элементам без преобразования индексов в индексы. Любой другой способ возможен, если он быстрее, чем метод, использующий sub2ind.

1 Ответ

7 голосов
/ 18 июля 2009

Это может быть быстрее, чем при использовании SUB2IND:

[r,c] = size(M);  % Get the size of M
vals = M(I+r.*(J-1));  % Compute a linear index with vector operations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...