Mercurial > hg > camir-aes2014
comparison toolboxes/FullBNT-1.0.7/KPMtools/max_mult.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e9a9cd732c1e |
---|---|
1 function y=max_mult(A,x) | |
2 % MAX_MULT Like matrix multiplication, but sum gets replaced by max | |
3 % function y=max_mult(A,x) y(i) = max_j A(i,j) x(j) | |
4 | |
5 %X=ones(size(A,1),1) * x(:)'; % X(j,i) = x(i) | |
6 %y=max(A.*X, [], 2); | |
7 | |
8 % This is faster | |
9 if size(x,2)==1 | |
10 X=x*ones(1,size(A,1)); % X(i,j) = x(i) | |
11 y=max(A'.*X)'; | |
12 else | |
13 %this works for arbitrarily sized A and x (but is ugly, and slower than above) | |
14 X=repmat(x, [1 1 size(A,1)]); | |
15 B=repmat(A, [1 1 size(x,2)]); | |
16 C=permute(B,[2 3 1]); | |
17 y=permute(max(C.*X),[3 2 1]); | |
18 % this is even slower, as is using squeeze instead of permute | |
19 % Y=permute(X, [3 1 2]); | |
20 % y=permute(max(Y.*B, [], 2), [1 3 2]); | |
21 end |