我似乎无法在Mathematica 8中更改BodePlot上的Ticks。
Clear[z]
hz = z/(z - 0.4) (*make up some transfer function *)
ts = 1;
tf = TransferFunctionModel[hz, z, SamplingPeriod -> ts];
scale = {{"Linear", "dB"}, Automatic};
BodePlot[tf,
PlotRange -> Automatic,
ImageSize -> 300,
ScalingFunctions -> scale,
Ticks -> {{{0, Pi/4, Pi/2, 3/4 Pi, Pi}, Automatic}, Automatic}
]
根据文档,所有Plot选项都可用于BodePlot。
请注意,BodePlot的Ticks格式是作为2个列表提供的,而不是普通图的一个,因为生成了2个图。在上面,我试图改变第一个图(幅度图)的x轴刻度。
问题是:如何更改BodePlot上的Ticks?我在上面的电话中犯了错误吗?
感谢
现在使用FrameTicks,我发现了一个非常奇怪的行为。如果我对框架的右侧或顶部的任何刻度使用自动,我在控制台中会遇到内核错误。这是一个例子
Clear[z]
hz = z/(z - 0.4)
tf = TransferFunctionModel[hz, z, SamplingPeriod -> 1];
BodePlot[tf,
FrameTicks ->
{
{{Automatic, Automatic}, {Automatic, None}},
{{Automatic, None}, {Automatic, None}}
}
]
上面给出了控制台上的内核错误消息。奇怪的是,如果我再次运行相同的命令,我不会在控制台上再次看到错误。
将上述内容更改为以下内容,错误消失:
Clear[z]
hz = z/(z - 0.4)
tf = TransferFunctionModel[hz, z, SamplingPeriod -> 1];
BodePlot[tf,
FrameTicks ->
{
{{Automatic, None}, {Automatic, None}},
{{Automatic, None}, {Automatic, None}}
}
]
当我使用它时,我不会出错:
Clear[z]
hz = z/(z - 0.4)
tf = TransferFunctionModel[hz, z, SamplingPeriod -> 1];
BodePlot[tf,
FrameTicks -> {{Automatic, Automatic}, {Automatic, Automatic}}
]
因此,似乎在右侧使用自动而不是无,而在FrameTicks中使用顶部会导致BodePlot出现问题。我认为自动在有疑问时使用是安全的,但在这种情况下不是。
答案 0 :(得分:4)
BodePlot
会返回Frames
而不是Axes
的图片,因此请使用FrameTicks
而不是Ticks
。