没有得到确切的彩色区域(MATLAB)

时间:2015-07-01 02:05:36

标签: matlab plot fill

下午好, 我有以下代码及其结果。 你可以看到我得到的彩色区域是三个部分。我想要的真正有色部分是中间部分。有人可以帮帮我吗? 这是代码

gamma=20;
P=0.5;
N=P.*gamma;
lamdazero=1550;
lamdasignal=linspace(1540,1580,100000);
lamdapump=1560;
beta3=0.06;
beta4=-1*10^-4;
c=2*pi*3*10^5;
L=1;
A0=(1./lamdapump) -(1./lamdazero);
B0=(1./lamdapump) -(1./lamdasignal);
Third0=beta3.*(c.^3).*A0.*(B0.^2);
Fourth0=beta4.*(1./2).*c.^4.*(A0.^2).*(B0.^2);
Fourorder=c.^4.*beta4.*(1/12).*(B0).^4;
deltabeta=Third0+Fourth0+Fourorder;
lamdasignal22=linspace(1550,1560,100000);
g0=1.1*10^-11;
Aeff=11*10^-12;
PSBS=0.08;
SBS=(g0.*PSBS.*1000)./Aeff ;
     f0 = ones(size(lamdasignal));
    f0 = 0 .* f0;

    f1 = ones(size([lamdasignal]));
    f1 = -2.*N .* f1;

    f2 = ones(size(lamdasignal22));
    f2 = -4.*N .* f2;

         PA=deltabeta./N;   

Image     数字     HAX =轴;

[ax,p1,p2] = plotyy(lamdasignal,deltabeta,lamdasignal,PA,'plot','plot');

hold on

SP1=1560; %your point goes here
line([SP1 SP1],get(hax,'YLim'),'Color',[1 1 0],'Linewidth',4)
annotation('textarrow',[0.4,0.45],[0.2,0.2],...
           'String','\lambda_p= 1560 nm ')

title({'Linear phase mismatch vs signal wavelength' ;'in anomalous dispersion regime'},'fontsize',12)    
ylabel(ax(1),'Phase mismatch(/km))','fontsize',12) % label left y-axis
ylabel(ax(2),'Phase mismatch(\gamma P))','fontsize',12) % label right y-axis
xlabel(ax(2),'Signal wavelength(nm)','fontsize',12) % label x-axis


fill([lamdasignal fliplr(lamdasignal)],[deltabeta f2],'r')

hold off

1 个答案:

答案 0 :(得分:0)

我知道自从你提出这个问题以来已经很久了,但以下几行就是你所追求的。 patch是一个多边形创建函数,在这个简单的例子中,你采用一个闭合的X向量和一个相应的闭Y向量。 您只需要注意关闭多边形并将其带到图形的底部以避免看起来奇怪的多边形因此最小/最大(xlim)。
享受。

patch(([lamdasignal max(xlim) min(xlim)]),([min(deltabeta, -4.*N) min(ylim) min(ylim)]),[0 0 1]);