BodePlot (V 8.0 の新機能) で別の問題が発生しています。そして、私が見ていないものを誰かが見ることができるかどうかを確認するためにここに尋ねると思いました.
プロットなどのオブジェクトからオプションを抽出するために私が知っている通常の方法はAbsoluteOptions
、次のように を使用することです。
p=Plot[Sin[x],{x,0,2Pi}];
AbsoluteOptions[p,AxesOrigin]
どちらが戻った
{AxesOrigin -> {0., 0.}}
BodePlot で同じことをしようとすると、唯一のトリックは、BodePlot のデフォルトが Grid を返すことであるため、代わりに という新しいオプションを使用してプロット イメージを返すように指示する必要がありますPlotLayout -> "List"
。およびフェーズ)。次にAbsoluteOptions
、上記の例のように、2 つのプロットのいずれにも使用できます。
この例では、2 つのうちの最初のプロット (大きさ) をテスト用に選びました。2 番目のプロット (位相) を使用すると、同じエラーが発生します。
Clear[z]
hz=z/(z^2-z+0.3);
tf=TransferFunctionModel[hz,z,SamplingPeriod->2]
p=BodePlot[tf,PlotLayout->"List"][[1]]
これまでのところ、すべてうまくいっています。プロットはうまくいきます。
ここで問題が発生します。上部のプロットの例で行ったように、オプションの値を見つけたかったので、次のように入力しました
AbsoluteOptions[p,AxesOrigin]
そして正解が返ってきても
{AxesOrigin -> {-2.803880122969847, -7.234556720270532}}
問題は、多くのカーネル エラーが同時にコンソールに出力されることです。
Ticks::ticks: {At Line = 77, the input was:,AbsoluteOptions[p,AxesOrigin],
{{{-5.,-5.,{0.0125,0.},{GrayLevel[0.],AbsoluteThickness[0.25]}},<<33>>,{<<1>>}},
{<<1>>}}} is not a valid tick specification. >>
上記の最も最小限の例を試したので、上記のエラーが発生する理由がわかりません。Automatic for を使用するように指示するなど、他にも多くのことを試しましたFrameTicks
。
Clear[z]
hz=z/(z^2-z+0.3);
tf=TransferFunctionModel[hz,z,SamplingPeriod->2]
p=BodePlot[tf,PlotLayout->"List",FrameTicks->Automatic][[2]]
AbsoluteOptions[p,AxesOrigin]
しかし、これらのエラーを取り除くことはできません。BodePlot のどこかに問題があるように感じますが、自分で何か間違ったことをしている可能性があるため、わかりません。
これらのエラーを発生させずに BodePlot で AbsoluteOptions を使用する方法を知っている人はいますか?
ありがとう
アップデート:
この問題の回避策を発見しました。さまざまなことを試してみると、BodePlot の非フレーム レイアウトを使用できることがわかりました。デフォルトは Frame->True でした。しかし、Frame->False を試したところ、問題はなくなりました。
Clear[z]
hz=z/(z^2-z+0.3);
tf=TransferFunctionModel[hz,z,SamplingPeriod->2]
p=BodePlot[tf,PlotLayout->"List",Frame->False][[1]]
AbsoluteOptions[p,Ticks]
エラーは発生せず、実際のティックが返されるようになりました。したがって、誰かが BodePlot を使用したい場合は、Frame->False を使用している可能性があります。とにかく、元の Frame レイアウトは実際には好きではありませんでした。この場合、軸がどのように表示されるかにより、標準プロットの方が好きです。