0

ここに画像の説明を入力こんにちは、私は 3 つの色付きの領域を指定したいこのコードを持っています。1 つは、コードに示されているように、最終関数 C と C1 がマージされたときに、 0 未満、0 と 1 の間、および 1 より大きい場合です。コードでは、マージされた輪郭プロットを最後にマージして定義する必要があります。 3 つの単純な領域で。結果を次の図に示します。最初は、最も支配的な色は明るい青だと思うかもしれませんが、contourf プロットとカラーバーを見ると、何らかの理由で一致しません。ご協力ありがとうございました。この問題を別の問題として投稿しなかったことを管理者に謝罪します。

    [r,R] = meshgrid(0.1:0.01:10,-5:0.01:5);
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Z=(((R).^2)-1 );
           A=2+ (R.*(r+(1./r)));
           B=sqrt(Z).*(r-(1./r));
           Ratio=acoth(A./B);
           D= (r+(1./r))./4;
           E=D./sqrt(Z);

           C=D.*E.*Ratio;
    C(R==1)=(r(R==1)+(1./r(R==1)))*0.25.*((r(R==1).^2-1)./(2*r(R==1)+r(R==1).^2-1) );
    C(R==-1)=(r(R==-1)+(1./r(R==-1)))*0.25.*((r(R==1).^2-1)./(2*r(R==1)-r(R==1).^2+1) );
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Z1=((1 -(R).^2));
           A1=2+ (R.*(r+(1./r)));
           B1=sqrt(Z1).*(r-(1./r));
           Ratio1=EA(A1./B1);
           D1= (r+(1./r))./4;
           E1=D1./sqrt(Z1);

           C1=D1.*E1.*Ratio1;
    C1(R==1)=(r(R==1)+(1./r(R==1)))*0.25.*((r(R==1).^2-1)./(2*r(R==1)+r(R==1).^2-1) );
    C1(R==-1)=(r(R==-1)+(1./r(R==-1)))*0.25.*((r(R==1).^2-1)./(2*r(R==1)-r(R==1).^2+1) );

    test=C;
    test((R<1)&(R>-1))=nan;   
    test1=C1;
    test1(R>1)=nan;
    test2=test1;
    test2(R<-1)=nan;

       figure
          contourf(r,R,test)
        hold on
         contourf(r,R,test2);
        colormap(jet(3))
        conts = [-1:1:2];
            h=colorbar;
         set(get(h,'ylabel'),'string','\gamma P_P L','FontSize',18)
           xlabel('$r$','Interpreter','latex','FontSize',18)
        ylabel('$D \over 2\sqrt{M}$','Interpreter','latex','FontSize',18)
    set(h,'YTick',conts)
    set(gca,'fontsize',18)
        hold off 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function  y  = EA(x)

 y = acot(x);

y(y<0)=y(y<0)+pi;

return


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

コードの結果

4

1 に答える 1

1

わかりましたので、コードには 2 つの大きな問題があります。

1) カラーバーを適切な範囲に設定する必要があります。つまり、xolorbar カラー スケールを別の値に設定する必要があります。カラーバーの色の制限は、2015b で呼び出されたプロパティ'Clim'であり、軸に配置されています。これらは変更される可能性があるためcaxis、この機能を使用することをお勧めします。3 つの色があり、範囲 [-inf -> 0,0 -> 1,1 -> Inf] が必要なので。制限をお勧めしますcaxis([-1,2]);これにより、必要な場所に休憩が設定されます。

2) レベル (MATLAB がプロットでトポロジカル レベルと呼ぶもの) は、MATLAB によって自動的に設定されます。これらの値は、必要なものに対応していません。引数contourf(r,R,test, 'ShowText', 'on')を使用すると、私が何を意味するかがわかります。これらを変更する組み込み関数があるかどうかはわかりませんが、プロパティが呼び出さLevelListれ、等高線プロット オブジェクトで見つかります。contourf関数では以下を使用できます

contourf(r,R,test, 'LevelList', [-inf,-1,0,1,inf]);
contourf(r,R,test, 'LevelList', [-inf,-1,0,1,inf]);
于 2016-08-12T07:06:00.727 に答える