fix_ytick.m

来自「我认为很不错的语音处理的matlab源代码」· M 代码 · 共 63 行

M
63
字号
function [ytick_m, YTickLabel1, ytick_good, ytick_new, yticklabel_new]=fix_YTick(fmtz)
% fmtz means force mean to zero

YTickLabel1=get(gca, 'YTickLabel');
ytick_m=get(gca, 'YTick');
ylim1=get(gca, 'ylim');

max_yl=max(ylim1);
min_yl=min(ylim1);

ytick_ix_low=find(ytick_m < -0.25*(max_yl-min_yl)+max_yl );
ytick_ix_high=find(ytick_m > 0.25*(max_yl-min_yl)+min_yl );

ytick_good=intersect(ytick_ix_low, ytick_ix_high);

ytick_new=ytick_m(ytick_good);

for e1=1:length(ytick_good);
    if iscell(YTickLabel1(ytick_good(e1), :))
        yticklabel_new{e1}=YTickLabel1{ytick_good(e1), :};
    else
        yticklabel_new{e1}=YTickLabel1(ytick_good(e1), :);
    end
    
end

if length(ytick_good) < 3  || fmtz
    
    if fmtz == 1
        
        buf=max(abs([max_yl, min_yl]));
        
        max_yl=buf;
        min_yl=-buf;
        
    end

    max11=max_yl-0.25*(max_yl-min_yl);
    min11=min_yl+0.25*(max_yl-min_yl);
    
    dif=max11-min11;
    nd3=floor(log10(abs(dif)));
    nd33=log10(abs(dif));
    
    if nd3+0.302 >= nd33
        nd4=-nd3+1;
    else
        nd4=-nd3;
    end
    
    max1=sign(max11)*10^(-nd4)*floor(10^(nd4)*max11);
    min1=10^(-nd4)*ceil(10^(nd4)*min11);
    mean1=0.5*(max1+min1);
    
    ytick_new=[min1 mean1 max1];
    yticklabel_new={};
    for e1=1:3;
        yticklabel_new{e1}=num2str(ytick_new(e1));
    end
    
end

set(gca, 'YTick', ytick_new, 'YTickLabel', yticklabel_new );

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?