How to construct a customized outer function for 2 vectors?
조회 수: 1 (최근 30일)
이전 댓글 표시
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!
댓글 수: 0
채택된 답변
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!