2012-01-09 2 views
0

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

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

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

ответ

2

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

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

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

+0

Если 'r' и' v' имеют одинаковую длину, тогда 'r (1: length (v))' упрощается до просто 'r'. –

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