• matlab建立双坐标


    (1)设定双Y坐标

    x=0:0.1:2*pi;

    y1=sin(x);

    y2=cos(x);

    y3=1-sin(x);

    [AX]=plotyy(x,y1,x,y2); %双Y坐标的建立

    hold on;

    plot(x,y3); %左侧坐标再叠加波形

    set(get(gca,'xlabel'),'string','X-axis');

    set(get(AX(1),'Ylabel'),'string','left Y-axis');

    set(get(AX(2),'Ylabel'),'string','right Y-axis');

    set(gca,'xTick',[0:0.5:7]); %设定X坐标范围

    set(AX(1),’ylim‘,[-1,2],'yTick',[-1:0.2:2]); %设定左侧Y坐标范围

    set(AX(2),'ylim',[-1,1],'yTick',[-1:0.5:1]); %设定右侧Y坐标范围

     本程序可以在左侧再叠加分析,至于在右侧再叠加波形待解决。。。

    ylabel('voltage(V)')    % 坐标轴上加文字

    clip_image001

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

     补充:两种设X轴坐标范围的方法

    (1)[AX,H1,H2]=plotyy(s,X,s,Y,'plot'); %双Y坐标的建立

             set(gca,'xlim',[0.06,0.08],'xtick',[0.06:0.05:0.08]); %设定X坐标范围

    只能针对左边坐标

    (2)[AX,H1,H2]=plotyy(s,X,s,Y,'plot'); %双Y坐标的建立

             set(AX(1),'xlim',[0.06,0.08],'ylim',[-40,40],'ytick',[-40:10:40]); %设定左侧X,Y坐标范围

             set(AX(2),'xlim',[0.06,0.08],'ylim',[-600,600],'yTick',[-600:300:600]); %设定右侧X,Y坐标范围

     此方法的一个问题,无法改变其中一个坐标轴图形的颜色

    (2)设定双X与双Y坐标

    具有两个纵坐标标度的图形

    在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为:

    plotyy(x1,y1,x2,y2)

    其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。

    双y轴坐标可以用plotyy(x,y1,x,y2)来实现

    双x坐标可以用

    set(gca,'xaxislocation','bottom','xticklabel',{'0','1','2','3','4'}) (假设x轴的标注为1,2,3,4)

    set(gca,'xaxislocation','top','xticklabel',{'0','1','2','3','4'})

    进行相应的设置

    【 * 例 10.7.3 -1 】制作一个双坐标系用来表现高压和低温两个不同量的过渡过程。

    tp=(0:100)/100*5;yp=8+4*(1-exp(-0.8*tp).*cos(3*tp)); % 压力数据

    tt=(0:500)/500*40;yt=120+40*(1-exp(-0.05*tt).*cos(tt)); % 温度数据

    % 产生双坐标系图形

    clf reset,h_ap=axes('Position',[0.13,0.13,0.7,0.75]);  %<4>生成一个窗口

    set(h_ap,'Xcolor','b','Ycolor','b','Xlim',[0,5],'Ylim',[0,15]);  %设定左边的XY

    nx=10;ny=6;  %<6>定义两个变量。给下一语句使用

    pxtick=0:((5-0)/nx):5;pytick=0:((15-0)/ny):15;   %<7> X轴被分了10格,Y轴被分了6格,pxtickpytick分别表示向量

    set(h_ap,'Xtick',pxtick,'Ytick',pytick,'Xgrid','on','Ygrid','on')   %画出虚线格,'Xgrid','on','Ygrid','on'起到画虚线的作用

    h_linet=line(tp,yp,'Color','b');   %<9>画一yp波形,对波形进行颜色设置

    set(get(h_ap,'Xlabel'),'String',' 时间 /rightarrow (分) ')  % X横坐标命名

    set(get(h_ap,'Ylabel'),'String',' 压力 /rightarrow(/times10 ^{5} Pa )')  %Y坐标命名

    h_at=axes('Position',get(h_ap,'Position')); %<12>

    set(h_at,'Color','none','Xcolor','r','Ycolor','r'); %<13>

    set(h_at,'Xaxislocation','top') %<14>

    set(h_at,'Yaxislocation','right','Ydir','rev') %<15>  % 以上四句语句实现了上X坐标,右Y坐标

    set(get(h_at,'Xlabel'),'String','/fontsize{15}/fontname{ 隶书 } 时间 /rightarrow (分) ')

    set(get(h_at,'Ylabel'),'String',' ( {/circ}C )/fontsize{15} /leftarrow /fontname{ 隶书 } 零下温度 ')

    set(h_at,'Ylim',[0,210]) %<18>

    line(tt,yt,'Color','r','Parent',h_at)  %<19>yt波形,切记不能缺少Parent

    xpm=get(h_at,'Xlim');   %<20>定义新变量

    txtick=xpm(1):((xpm(2)-xpm(1))/nx):xpm(2);  %<21> xpm1)为0xpm2)为40在哪条语句定义的?

    tytick=0:((210-0)/ny):210; %<22>  %Y坐标分格

    set(h_at,'Xtick',txtick,'Ytick',tytick)  %<23>

    clip_image002

      ------------------------------------------------------------------------------------------------------------------

    自编语言:

    [filename,pathname]=uigetfile({'*.mat'},'open data files')

    b=[pathname,filename]

    load(b);

    s=t(600000:800001);

    X=iIV(600000:800001);

    Y=vV(600000:800001);

    clf reset,h_ap=axes('Position',[0.13,0.13,0.7,0.75]);  %<4>生成一个窗口

    set(h_ap,'Xcolor','k','Ycolor','k','Xlim',[0.06,0.08],'Ylim',[-30,30]);  %设定左边的XY 

    nx=5;ny=6;  %<6>定义两个变量。给下一语句使用

    pxtick=0.06:((0.08-0.06)/nx):0.08;pytick=-40:((80-0)/ny):40;   %<7> X轴被分了10格,Y轴被分了6格,pxtickpytick分别表示向量

    set(h_ap,'Xtick',pxtick,'Ytick',pytick,'Xgrid','on','Ygrid','on')   %画出虚线格,'Xgrid','on','Ygrid','on'起到画虚线的作用

    h_linet=line(s,X,'Color','k');   %<9>画一yp波形,对波形进行颜色设置

    set(get(h_ap,'Xlabel'),'String','t(s)')  % X横坐标命名

    set(get(h_ap,'Ylabel'),'String','current(A)')  %Y坐标命名

    h_at=axes('Position',get(h_ap,'Position')); %<12>

    set(h_at,'Color','none','Xcolor','k','Ycolor','k'); %<13>

    set(h_at,'Xaxislocation','top') %<14>

    set(h_at,'Yaxislocation','right','Ydir','rev') %<15>  % 以上四句语句实现了上X坐标,右Y坐标

    set(get(h_at,'Xlabel'),'String','t(s) ')

    set(get(h_at,'Ylabel'),'String',' voltage(V ')

    set(h_at,'Ylim',[-600,600]) %<18>

    line(s,Y,'Color','k','Parent',h_at)  %<19>yt波形,切记不能缺少Parent运行到这一段语句,有一个很让人费解的问题:

    X轴的坐标范围是[0.055:0.08],无法与左坐标保持一致,原因待高手解释?最后波形出现后,可以用 property edit 做一下修改,图形完成。

    xpm=get(h_at,'Xlim');   %<20>定义新变量

    txtick=xpm(1):((xpm(2)-xpm(1))/nx):xpm(2);   %<21> xpm1)为0xpm2)为40,在哪条语句定义的?

    tytick=-600:((1200-0)/ny):600; %<22>  %Y坐标分格

    set(h_at,'Xtick',txtick,'Ytick',tytick)  %<23>

    本程序为7.0版本下,也许别的版本可以用 property edit 解决以上所有的问题,待验证。

     

    源文档 <http://bilu.blog.163.com/blog/static/176178129201182943032724/>

  • 相关阅读:
    推荐算法学习资料
    imsdroid 学习(初认识)
    从网易新闻看离线阅读的实现思路
    关于PullToRefreshView bug 的修复
    Android Log日志的封装类,显示类名以及行号,快速定位
    Android Sqlite数据库版本升级管理初探
    《围观啦》发布了!!!!!!!
    单本书阅读,android客户端
    Android P2P语音通话实现(思路探讨)
    HTTP协议基础
  • 原文地址:https://www.cnblogs.com/AI-Algorithms/p/3737682.html
Copyright © 2020-2023  润新知