调用matlab函数而不用它的所有参数

时间:2013-09-27 13:29:43

标签: matlab

function y = myFunc(tR,mode)

if ~isfield(tR, 'isAvailable')
    tR.isAvailable= false;
end

if tR.isAvailable
y = fullfile(workingFolder,'file.txt');
else
y = '';

switch(mode)
case '1'
.....    
case '2'
.....
end
end 

当我调用myFunc(tR,'1')时,它没问题 但是我也可以在没有myFunc(tR)模式的情况下调用myFunc

在某些情况下,如果参数中没有提供模式变量,myFunc不会执行switch case,我该如何说?

4 个答案:

答案 0 :(得分:2)

如果用户提供的输入不足,请在函数中使用nargin来提供一些默认输入。

答案 1 :(得分:2)

answer by Dennis Jaheruddin提供了很好的可能性列表,但我也发现使用exist是一种有用的方法:

if exist('mode', 'var')
    % Your switch statement here
end

答案 2 :(得分:1)

  1. 使用exist可能是最简单的方法,如果你想在末尾排除元素,尽管nargin也可以做到这一点。一般情况下,如果变量具有有意义的位置或没有有意义的名称,我会使用nargin,只有当exist具有有意义的名称时才使用modeSee this question for more about this choice.

  2. 如果您想要排除一般的元素,使用varargin可能是最好的方法。

  3. 但是,如果您只想在中间排除1个元素,那么一个简单的替代方案是:

  4. 如果您不想使用[],请将其设为if ~isempty(mode) % Your switch statement here end ,然后将切换语句放在此内:

    if

    当然,如果您忘记稍后在同一个函数中使用{{1}}语句,则会发生奇怪的事情。

答案 3 :(得分:0)

您可以使用varargin,但需要以不同方式访问参数。 另外,用nargin检查你有多少参数。

http://www.mathworks.de/de/help/matlab/ref/varargin.html

您的函数声明如下:

function y = myFunc(tR, varargin)