gpt4 book ai didi

matlab - 将可变参数传递给 plot() 函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:06 26 4
gpt4 key购买 nike

我正在为 plot 编写一个包装器,它可以自动执行我发现自己经常执行的一些任务。

示例代码片段可能如下所示

function myplot(x,y,varargin)
plot(x,y,varargin{:})
xlabel('x axis')
ylabel('y axis')
end

我正在使用 Matlab 的 varargin 将附加参数传递给 plot。但是,我发现我可能想在 varargin 中传递我自己的可选参数。例如,我可能想写这样的东西

>> myplot(1:10, 1:10, 'r', 'LineWidth', 2, 'legend', {'Series 1'})

让函数自动在绘图中包含一个图例 - 也就是说,我希望能够将我自己的关键字参数与您可以提供给绘图的关键字参数混合在一起。除了为我的可变参数编写完整的解析器之外,有没有一种方法可以在 Matlab 中简单且可重用地执行此操作?

我尝试过使用 inputParser 对象,但这需要我手动将每个可能的附加参数添加到绘图(以及它的默认值),这似乎并不理想。

最佳答案

inputParser 可能仍然是最佳选择。您可以为附加参数构造对象,并将所有要传递给 plot 的 parameterName/parameterValue 对集中到 Unmatched 中。

function myplot(x,y,varargin)

parserObj = inputParser;
parserObj.KeepUnmatched = true;
parserObj.AddParamValue('legend',false);
%# and some more of your special arguments

parserObj.parse(varargin);

%# your inputs are in Results
myArguments = parserObj.Results;

%# plot's arguments are unmatched
tmp = [fieldnames(parserObj.Unmatched),struct2cell(parserObj.Unmatched)];
plotArgs = reshape(tmp',[],1)';


plot(x,y,plotArgs{:})
xlabel('x axis')
ylabel('y axis')

if myArguments.legend
%# add your legend
end
end

关于matlab - 将可变参数传递给 plot() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com