Как векторизовать этот простой цикл присваивания в Matlab - PullRequest
0 голосов
/ 09 января 2012

У меня есть вектор v значений и вектор r индексов.Я хочу сохранить значения в матрице m следующим образом:

for i = 1:length(v)
    m(i, r(i)) = v(i);
end

Какой самый быстрый способ сделать это в векторизованном виде?

1 Ответ

2 голосов
/ 09 января 2012

Я не знаю, если это быстрее, я полагаю, что так, но разница может быть очень мала, но вот один из способов:

m(sub2ind(size(m),1:length(v),r(1:length(v))))=v;

Если r является вектором столбца, то sub2ind будет жаловаться на размер векторов, вы можете просто взять его транспонирование, и оно решит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...