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

1 Ansicht (letzte 30 Tage)
Mateusz
Mateusz am 18 Dez. 2012
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?

Antworten (1)

Andrei Bobrov
Andrei Bobrov am 18 Dez. 2012
Bearbeitet: Andrei Bobrov am 18 Dez. 2012
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);

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by