我正在写一个函数,我需要一些帮助。 这是我的功能:
function [varargout] = myfunc(x, y, z, optional)
有两种可能的输出:A和B.通过设置强制输入变量(x,y,z),你得到A.如果你也设置了可选参数,你也应该得到A和B. 所以,这就是我尝试这样做的方式:
if (nargin == 4)
varargout{1} = A;
varargout{2} = B;
else
varargout{1} = A;
end
这不起作用......我在哪里弄错了?
提前谢谢!
答案 0 :(得分:0)
我没有看到它的问题。如果你尝试,唯一的问题就出现了:
content
在这种情况下,您的函数会抱怨您正在尝试分配给尚未定义的第二个变量。因此,您需要进行更多输入/输出检查(例如,通过[a,b] = myfunc(1,2,3)
)并采取相应措施。 (即指定自定义错误,或返回nargout
等等。
PS。我假设你的函数定义如下:
b=[]
答案 1 :(得分:0)
varargout需要两个输出。试试这个:
[A,varargout] = myfunc(x, y, z, optional)
和
if (nargin > 3)
varargout{1} = B;
end
答案 2 :(得分:0)
此代码存在以下几个问题:
我不知道上面哪一项是您的主要关注点,但是,以下代码应该正常工作:
function varargout = myfunc2(x, y, z, varargin)
if nargin == 4
varargout{1} = 1; % where A=1 and B = 2
varargout{2} = 2;
else
varargout{1} = 1;
end
end
有关varargin和varargout的详细信息,请查看随附的链接:
答案 3 :(得分:0)
我解决了!我在这里发布解决方案,它可能对其他人有用。谢谢大家!
function [A, varargout] = myfunc(x, y, z, optional)
A = somefunction(x,y,z)
if nargout == 2 && nargin == 4
i = find(A > optional);
B = somefunction(A,i);
varargout{1} = B;
end
这样,您有一个与可选输入变量关联的可选输出。它有效:)