Handles returning multiple outputs

24 visualizzazioni (ultimi 30 giorni)
Lukas
Lukas il 24 Nov 2013
Commentato: Lukas il 24 Nov 2013
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?

Risposta accettata

Alfonso Nieto-Castanon
Alfonso Nieto-Castanon il 24 Nov 2013
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 Commento
Lukas
Lukas il 24 Nov 2013
That's exactly what I ended up doing. It's a bit less slick, but it works well enough.

Accedi per commentare.

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by