2

Matlab でいくつかの loglog プロットにタイトルを設定する際に問題が発生しています。タイトル関数は、plot(x,y) を使用して同じデータをプロットする場合は正常に機能しますが、loglog(x,y) を使用すると表示に失敗します。データが原因のバグかもしれないと思ったのですが、どうやら間違っていたようです。以下のコメントを参照してください。

%title_prob
figure
x=0:1:1000;                     
y=3*x.^x;                       %The sum of this vecor is Inf
loglog(x,y)
title('Title','FontSize',16)    %This title doesn't set
xlabel('X Label','FontSize',12)
ylabel('Y Label','FontSize',12)

figure
x2=0:1:100;
y2=3*x2.^x2;                    %The sum of this vector is finite
loglog(x2,y2)
title('Title','FontSize',16)    %This title does set
xlabel('X Label','FontSize',12)
ylabel('Y Label','FontSize',12)

%Further investigation - is Inf to blame?  Apparently not.
FirstInf=max(find(y<Inf))+1;
figure
loglog(x(1:FirstInf),y(1:FirstInf))
title('Inf value in the y vector','FontSize',16)    %Title not set

figure
loglog(x(1:FirstInf-1),y(1:FirstInf-1))
title('NO Inf value in the y vector','FontSize',16) %Title not set
figure
plot(x,y)
title('Works for the plot function','FontSize',16)

提案をありがとう。

4

2 に答える 2

1

タイトルの位置は、常に上限に基づく軸座標で計算されyます。そのためInf、タイトルの位置も Inf になり、表示されなくなります。

(図 4)から Inf 値を取り出すyと、次の値はまだ非常に大きく、約 1e306 です。タイトルの位置を計算するために、MATLAB は y の上限 (1.8e308 を少し下回りますylim。REALMAX で double 値の制限を確認してください。

でタイトルの位置を確認できます

get(get(gca,'title'),'position')

そうです、タイトルが消えるのは Inf 値です。

を呼び出す前に、y 軸の制限を手動で設定できますtitle

yl = ylim;
ylim([yl(1), 10^302])
于 2013-04-11T15:50:34.507 に答える
1
%Further investigation - is Inf to blame?  Apparently not.
FirstInf=max(find(y<Inf))+1;
figure
loglog(x(1:FirstInf),y(1:FirstInf))
title('Inf value in the y vector','FontSize',16)    %Title not set

はい、ただし、最初の位置のy(1)に NAN がある場合があります。0^0 は定義されていないため、それが異常の原因である可能性があります。

編集。技術的には 0^0 は定義されていません。制限は、拡張でゼロに近づく方法に依存するためです。Lim x^0 (x が上からゼロになるとき) は1ですが、lim 0^x (x がゼロになるとき) は0です。そのため、技術的に未定義です。

ただし、gnu-Octave をチェックインしたところ、0^0 は問題なく 1 を返しました。したがって、おそらくMatlabは同じものを返します。これは答えではないと思いますが、誰かが 0^0 の技術的な問題に興味を持っているかもしれないので、とにかくここに残しておきます。

于 2013-04-11T13:07:23.820 に答える