如何修改Octave中bode图两个子图的坐标轴字体大小
问题成因
Octave Control 工具包的bode()函数执行后会自动生成两个垂直排列的坐标区对象:上方为幅频特性子图,下方为相频特性子图。gca(获取当前坐标区)指令的返回值是最后被渲染激活的相频特性子图句柄,因此你编写的set(gca,'FontSize',20,'Fontname','arial')属性修改仅作用于第二个子图,上方幅频特性子图未被命中,就出现了仅第二个子图字号生效的异常。同时你编写的xlabel配置也仅会作用于第二个子图的x轴。
解决方案
批量获取当前图窗下所有坐标区对象,统一设置字体属性即可实现两个子图字号同步修改,修改后的完整脚本如下:
clear all; close all; pkg load control; Ri1 = Ri2 = 10e6; Cin = 2e-6; R1 = 9e3; R2 = 1e3; Rl = 100; C = 2e-6; tau1 = ((Ri1*Ri2)/(Ri1 + Ri2)) * Cin; H = tf([tau1 0],[tau1 1]); Gain = R2/(R1+R2); G = tf([C*Rl 0],[(C*R1 + C*(R1*R2)/(R1+R2)) 1]); G = Gain * G; bode(G*H); % 核心修改:获取当前图窗下所有坐标区句柄,批量设置属性 all_axes = findobj(gcf, 'type', 'axes'); set(all_axes, 'FontSize', 20, 'Fontname', 'arial'); % 给最下方子图设置x轴标签(如果需要两个子图都显示x轴标签,可遍历all_axes逐个设置) xlabel(all_axes(1), 'Frequency', 'FontSize', 20, 'FontWeight', 'bold');
如果你需要单独调整两个子图的样式,可以直接对all_axes数组索引来分别设置属性:all_axes(1)对应下方相频子图,all_axes(2)对应上方幅频子图。
内容的提问来源于stack exchange,提问作者henry ford
相关产品推荐
相关产品推荐

