有没有人知道如何增加由MATLAB控制系统工具箱生成的奈奎斯特图中的箭头大小(同时保持线宽和图中的其他所有内容相同)?
答案 0 :(得分:4)
我注意到您还在MATLAB中询问了the same question 中央。如果,请确保将其他访问者推荐给此答案 你发现它很有用。
MATLAB控制系统工具箱提供函数nyquist
和nyquistplot
来绘制动态系统模型频率响应的奈奎斯特图。
即使这些功能允许a certain level of graphical customization(单位,网格,标签和基本LineSpec),它们也不允许更改奈奎斯特图中默认显示的箭头大小(您可以详细了解此here和here)。
我开始探索奈奎斯特情节图的对象层次结构,并意识到绘制的箭头是patch
个对象。
我是怎么注意到的?
首先,我生成了一个样本奈奎斯特图:
sys = tf([2 5 1],[1 2 3]); % System transfer function.
nyquist(sys); % Nyquist plot.
然后我进行了蛮力测试!
以下测试遍历奈奎斯特绘图图窗口的每个graphics object并在每次迭代中闪烁一个元素。通过这种方式,当它们开始闪烁时,我能够直观地识别链接到箭头的对象。
h = findall(gcf); % Find all graphics objects including hidden ones.
t = 0.5; % Time interval.
for i = 1:length(h) % Loop through every object handle.
disp(i); % Display handle array index.
pause(t); % Pause for t seconds.
status = h(i).Visible; % Copy Visible property.
if strcmp(status, 'on') % If Visible = 'on' --> Visible = 'off'
h(i).Visible = 'off';
else % If Visible = 'off' --> Visible = 'on'
h(i).Visible = 'on';
end
pause(t); % Pause for t seconds.
h(i).Visible = status; % Restore original Visible property.
pause(t); % Pause for t seconds.
end
disp('Finished!'); % Display Finished!
运行此测试后,我发现h(196)
和h(197)
是奈奎斯特情节的两个箭头,它们是patch
个对象。
更改'LineWidth'
属性是下一个合乎逻辑的步骤。为了更改箭头的大小,您需要完成以下代码:
sys = tf([2 5 1],[1 2 3]); % System transfer function.
nyquist(sys); % Nyquist plot.
h = findall(gcf, 'Type', 'Patch'); % Find all patch objects.
for i = 1:length(h) % Loop through every patch object handle.
h(i).LineWidth = 4; % Set the new LineWidth value.
end
结果如下:
我希望你喜欢冒险! :d