将匿名函数定义为m文件函数的4个输出中的2个

Bri*_*ian 5 matlab

我有一个带4个输出的m文件功能.我想定义一个具有相同输入的匿名函数,但只生成四个输出中的两个.这可能吗?

Jon*_*nas 3

如果两个输出是#1和#2,一切都很好,你不必担心其他两个输出。

如果两个输出是另外任意两个,您有两个选择

(1) 创建一个具有两个输出的包装函数(请注意,在较新版本的 Matlab 中,您可以将未使用的输出替换dummy~.

function [out1,out2] = wrapperFunction(in1,in2,in3)
   [dummy,out1,dummy,out2] = mainFunction(in1,in2,in3);
Run Code Online (Sandbox Code Playgroud)

(2) 添加另一个输入变量,允许您切换函数的行为

function varargout = mainFunction(in1,in2,in3,outputSwitch)
   %# make output switch optional
   if nargin < 4 || isempty(outputSwitch)
      outputSwitch = 0;
   end

   %# calculation here that creates out1-4

   if outputSwitch
       %# the special case where we only want outputs 2 and 4
       varargout = {out2,out4};
   else
       %# return all four outputs
       varargout = {out1,out2,out3,out4}
   end
Run Code Online (Sandbox Code Playgroud)

然后您可以像往常一样创建匿名函数。