I have a function handle that returns 3 values.
@f(x,y) = basis_handle(x,y);
[z, dx, dy] = f(0.1,0.1) %returns 3 vectors
what I'd like to do now is create a function handle that performs a dot product of each of those 3 vectors with another vector. Something like:
@f_2(x,y) c'*f(x,y) %c is a known vector, same size as ones returned by @f(x,y)
As it is, this handle returns only 1 value, even if I try to ask for more, i.e. this produces an error:
[z, dx, dy] = f_2(0.1,0.1)
Is there any way to create a function handle that returns all 3 values as requested?

 채택된 답변

Alfonso Nieto-Castanon
Alfonso Nieto-Castanon 2013년 11월 24일

1 개 추천

I do not see how to do this using purely anonymous functions, but if that is not a requirement you could simply create a new function like:
function varargout=fevalndot(c,varargin)
[x{1:nargout}]=feval(varargin{:});
varargout=cellfun(@(x)c'*x,x,'uni',0);
end
and then simply define a handle to this function:
f_2 = @(x,y)fevalndot(c,f,x,y);

댓글 수: 1

Lukas
Lukas 2013년 11월 24일
That's exactly what I ended up doing. It's a bit less slick, but it works well enough.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

질문:

2013년 11월 24일

댓글:

2013년 11월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by