How to construct a customized outer function for 2 vectors?

Hi,
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,
A=[7,8,9];
B=[2,1,0,-1]';
C=zeros(4,3);
for i=1:4
C(i,:)=A.^B(i);
end
C
But I don't want a for-loop. Instead, I want to vectorize the calculation. Thus I tried this:-
D=exp(B*log(A))
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))?
Many thanks!

 채택된 답변

James Tursa
James Tursa 2018년 8월 10일
편집: James Tursa 2018년 8월 10일
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.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Symbolic Math Toolbox에 대해 자세히 알아보기

제품

릴리스

R2016a

질문:

SC
2018년 8월 10일

편집:

2018년 8월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by