Как ускорить выполнение следующих операций? Узкое место является третьей линией, хотя для больших размеров A1, четвертая линия довольно быстрая. Делает ли третья строка копию A (b, b), которая хранится в A1?ускорить индексирование подмассивов в Matlab?
A = randn(1000,1000);
b = [67 145 200 185 11 166 80 137 163 132 133 19]; %random
A1 = A(b,b);
v=A1*A(2,b)';
Обратите внимание, что следующее столь же медленно, так что я просто разогнали эту линию на две части, чтобы продемонстрировать, что третья строка выше, является узким местом.
v=A(b,b);*A(2,b)';
просто попробовал 'b = randperm (200,100);' но он не работает на Matlab R2009a. Я не знаю, когда они внедрили второй параметр. – Hoki
спасибо, это фактически делает его немного медленнее. Моя проблема связана с третьей строкой, только что были перестановки, поэтому я могу сформулировать свою проблему. Я специально пытаюсь ускорить третью строку, а не весь фрагмент кода. – methane
@methane Вы уверены, что третья строка является узким местом? Я просто пробовал с профилировщиком MATLAB и, похоже, «randn» является виновным здесь. Не могли бы вы опубликовать скриншот результатов профилировщика? – Divakar