Is there faster way of computing loop; max(w .* x); pool; ?

1 回表示 (過去 30 日間)
Mateusz
Mateusz 2012 年 12 月 18 日
Let's assume I have a matrix x \in R[#features, #data] and matrix w \in R[#units, #features]. Currently I am computing max per unit using a loop:
for k=1:numUnits
ww = w(k, :);
tmp = bsxfun(@times, w', x);
r(k, :) = max(tmp, [], 1);
end
Is there any faster, no-loop equivalent version of this code?

回答 (1 件)

Andrei Bobrov
Andrei Bobrov 2012 年 12 月 18 日
編集済み: Andrei Bobrov 2012 年 12 月 18 日
r = max(bsxfun(@times,reshape(w',size(w,1),[]),reshape(x,1,size(x,2),[])),[],3);
or
r = max(bsxfun(@times,permute(w,[2 3 1]),permute(x,[3 2 1])),[],3);

カテゴリ

Help Center および File ExchangeMathematics についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by