How to construct a customized outer function for 2 vectors?
6 views (last 30 days)
I have 2 vectors, namely A (dim n) and B (dim m). I want to have some customized outer functions to give me an output of m*n matrix. For example,
But I don't want a for-loop. Instead, I want to vectorize the calculation. Thus I tried this:-
D is better than C, since C needs a for-loop while D doesn't. But D is still not good enough, since it needs a transformation of log() and exp(). How can I get rid of the transformations, and produce the direct outer product of A.^B (or any other customized outer output f(A,B))?
James Tursa on 10 Aug 2018
Edited: James Tursa on 10 Aug 2018
Start with a vectorized function handle, e.g.,
f = @(x,y)x.^y
Then use bsxfun, e.g.,
result = bsxfun(f,A,B);
Note that for later versions of MATLAB, this implicit expansion capability is built-in to several MATLAB operators and bsxfun would not be needed.