Sjo*_*ies 6 wolfram-mathematica
我发现如果选项存在,a MatrixPlotin ClickPane会导致我的一个处理器内核以大约50%的活动循环FrameTicks -> Automatic.我已将代码减少到以下(实际上没有做任何事情):
a = ConstantArray[0, {2, 11}];
ClickPane[
Dynamic@
MatrixPlot[a, FrameTicks -> Automatic],
# &
]
Run Code Online (Sandbox Code Playgroud)

切换到FrameTicks -> None停止核心活动.

为了研究处理器行为,我让它Clock在20秒None和Automatic20秒之间循环(首先删除上面的ClickPane):
ClickPane[
Dynamic@
MatrixPlot[a, FrameTicks -> ft],
# &
]
Dynamic[ft = {Automatic, None}[[Clock[{1, 2, 1}, 20]]]]
Run Code Online (Sandbox Code Playgroud)
这给了我以下处理器活动显示:

这是在我的Win7-64/MMA 8.0.1系统上.
我的问题是:
MatrixPlot[a](没有任何FrameTicks设置)有这些奇怪的帧勾选?
看来Automatic该选项的设置FrameTicks改变了一个可以被看到的内部变量Dynamic。它显然(我认为是错误的)没有本地化。这导致对 的论点进行彻底的重新评估Dynamic。
解决方法是添加 add Refresh,它允许使用TrackedSymbols,以便我们可以将触发限制为我们感兴趣的变量,在本例中为数组a和FrameTicks选项值ft:
ClickPane[
Dynamic@
Refresh[
MatrixPlot[a, FrameTicks -> ft],
TrackedSymbols -> {a, ft}],
# &
]
Dynamic[ft = {Automatic, None}[[Clock[{1, 2, 1}, 20]]]]
Run Code Online (Sandbox Code Playgroud)
我的处理器状态现在保持在接近于零的水平。
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |