我正在MATLAB中编写一组自定义绘图函数,其目的是确保我们公司图表的外观更加一致并且快速。
在这些自定义函数中,我想重现MATLAB在允许函数调用的多个语法选项方面的可变性,类似于MATLAB的plot
函数可用的语法选项。
所以,假设我的函数是plotFun.m
,那么以下函数调用都应该起作用:
plotFun(y)
plotFun(x,y)
plotFun(ax,_)
plotFun(_,Name,Value)
我熟悉inputParser
以及其他几种解析作为varargin
传递的名称 - 值对的技术,但我无法弄清楚如何解析第一个参数,即ax
, x
和y
...
我已经扫描了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)
......