使用arrayfun调用中的set设置yaxis(1)和yaxis(2)的属性

时间:2018-04-27 20:26:36

标签: matlab object properties figure array-formulas

我正在努力改变2轴曲线的Y轴值。对于轴数组(ax),我可以使用以下内容设置限制:

ax(1).YAxis(1).Limits = [lowLim upLim];

目前,这是在循环中完成的,如下所示:

for i = 1:length(ax)
    ax(i).YAxis(1).Limits = [lowLim upLim];
end

问题是我希望能够将其写为arrayfun并且不允许使用此语法:

arrayfun(@(x) x.YAxis(1).Limits = [0 y1max], ax, 'uni', 0);

我认为如果我可以使用某些东西来实现

的效果
arrayfun(@(x) set(???, ,[lowLim, upLim]), ax, 'uni', 0);

但是,我不确定在这种情况下使用set访问Yaxis.Limits属性。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

除非有特定原因要使用YAxis.Limitsarrayfunset才能正常使用:

ax(1) = subplot(1, 2, 1);
ax(2) = subplot(1, 2, 2);
set(ax, 'YLim', [lowLim upLim])

按预期执行。

arrayfun本质上是一个内部循环,通常性能不如显式循环。