如何在MATLAB函数调用中允许多个语法选项

时间:2015-10-15 09:12:18

标签: matlab syntax

我正在MATLAB中编写一组自定义绘图函数,其目的是确保我们公司图表的外观更加一致并且快速。

在这些自定义函数中,我想重现MATLAB在允许函数调用的多个语法选项方面的可变性,类似于MATLAB的plot函数可用的语法选项。

所以,假设我的函数是plotFun.m,那么以下函数调用都应该起作用:

plotFun(y)
plotFun(x,y)
plotFun(ax,_)
plotFun(_,Name,Value)

我熟悉inputParser以及其他几种解析作为varargin传递的名称 - 值对的技术,但我无法弄清楚如何解析第一个参数,即axxy ...

我已经扫描了file exchange并发现了几个用于解析名称 - 值对的贡献(以某种方式与inputParser功能重叠),但在这种情况下它们似乎都没有。

编辑:

在回复thewaywewalk的评论时,这里有一些关于语法选项应该做什么的更多细节。 假设plotFun执行与line函数类似的操作(但使用其他默认值和一组不同的允许选项)。

y应该被验证为数字向量
x(如果存在)应该被验证为数字或日期时间向量

plotFun(x,y)
如果x属于类日期时间x = datenum(x),那么 致电line(x,y, 'Parent',gca)

plotFun(y)
应设置x = 1:numel(y),然后按上述方式调用line(x,y, 'Parent',gca)

plotFun(ax,_)
应该如上所述,但请拨打line(x,y, 'Parent',ax)而不是gca

plotFun(_,Name,Value)
应该解析并验证名称 - 值对并将它们传递给line的调用。我在inputParser的帮助下完成了这项任务。

编辑2

在我的梦想世界中,为Ctrl + F1点击plotFun会显示函数提示,即允许的语法选项列表(就像我在上面的代码块中输入的那样),而不是表现出更加神秘的plotFun(varargin) ......

0 个答案:

没有答案