AI-Algorithms

(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/>

分类:

技术点:

相关文章: