首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MATLAB中设置函数参数的默认值?

如何在MATLAB中设置函数参数的默认值?
EN

Stack Overflow用户
提问于 2009-04-28 08:46:14
回答 11查看 113.3K关注 0票数 131

在MATLAB中有可能有默认参数吗?

例如,这里:

代码语言:javascript
运行
复制
function wave(a, b, n, k, T, f, flag, fTrue=inline('0'))

我希望真正的解决方案是波函数的一个可选参数。如果可能,正确的方法是什么?

目前,我正在尝试我在上面发布的内容,我得到了:

代码语言:javascript
运行
复制
??? Error: File: wave.m Line: 1 Column: 37
The expression to the left of the equals sign is not a valid target for an assignment.
EN

回答 11

Stack Overflow用户

发布于 2009-05-02 12:37:40

我使用了inputParser对象来处理默认选项的设置。MATLAB不会接受您在问题中指定的类似Python的格式,但您应该能够像这样调用函数:

代码语言:javascript
运行
复制
wave(a, b, n, k, T, f, flag, 'fTrue', inline('0'))

定义wave函数后,如下所示:

代码语言:javascript
运行
复制
function wave(a, b, n, k, T, f, flag, varargin)

    i_p = inputParser;
    i_p.FunctionName = 'WAVE';

    i_p.addRequired('a', @isnumeric);
    i_p.addRequired('b', @isnumeric);
    i_p.addRequired('n', @isnumeric);
    i_p.addRequired('k', @isnumeric);
    i_p.addRequired('T', @isnumeric);
    i_p.addRequired('f', @isnumeric);
    i_p.addRequired('flag', @isnumeric);
    i_p.addOptional('ftrue', inline('0'), 1);

    i_p.parse(a, b, n, k, T, f, flag, varargin{:});

现在,传递给函数的值可以通过i_p.Results获得。此外,我不确定如何验证为ftrue传入的参数实际上是一个inline函数,因此我将验证器留空。

票数 58
EN

Stack Overflow用户

发布于 2011-02-20 23:21:28

另一种稍微不那么老套的方法是

代码语言:javascript
运行
复制
function output = fun(input)
   if ~exist('input','var'), input='BlahBlahBlah'; end
   ...
end
票数 19
EN

Stack Overflow用户

发布于 2015-06-09 22:01:02

这是我为函数设置默认值的简单方法,使用"try":

代码语言:javascript
运行
复制
function z = myfun (a, varargin)

%% Default values
b = 1;
c = 1;
d = 1;
e = 1;

try 
    b = varargin{1};
    c = varargin{2};
    d = varargin{3};
    e = varargin{4};
end

%% Calculation
z = a * b * c * d * e;
end
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/795823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档