相关疑难解决方法(0)

如何定义Manipulate控件变量定义的一部分以减少代码重复

这与这个问题有点关系

在Mathematica中将控制定义为变量

但是上面的问题没有回答我的问题,因为它讨论了完整的控制定义.(我也尝试过那里展示的一些技巧,但它们对我的问题不起作用).

我现在只询问部分控件的定义.(使用这种论坛格式也很难跟进一个老问题.因为使用微小的评论区域,很难提出更多的问题,并且更像是在询问空间较大的新问题时,可以粘贴代码和图片).

我所做的所有尝试都不起作用.我将从简单的例子开始解释这个问题.

假设有人想写

Clear["Global`*"];

Manipulate[Plot[f*g, {x, -1, 1}],
 Grid[{
   {Style["f(x)="], 
    PopupMenu[Dynamic[f], {x, x^2, x^3}, ImageSize -> Tiny]},{Style["g(x)="], 
    PopupMenu[Dynamic[g], {x, x^2, x^3}, ImageSize -> Tiny]}
   }]
 ]
Run Code Online (Sandbox Code Playgroud)

您可以看到每个控件定义中都存在重复的代码重复.(像ImageSize,Spacings->和许多其他装饰设置之类的东西会反复重复每个控件.

在此输入图像描述

如果我能写出类似的东西,那会是多么美好的事情

Manipulate[Plot[f*g, {x, -1, 1}],
 Grid[{
   {Style["f(x)="], PopupMenu[Dynamic[f], Evaluate@Sequence@v]},
   {Style["g(x)="], PopupMenu[Dynamic[g], Evaluate@Sequence@v]}
   }],

 Initialization :>
  (
   v = {{x, x^2, x^3}, ImageSize -> Tiny}
   )
 ]
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我在上面的那一行尝试了许多其他的东西,没有任何作用.喜欢

{Style["f(x)="], PopupMenu[Dynamic[f], v]},
Run Code Online (Sandbox Code Playgroud)

{Style["f(x)="], PopupMenu[Dynamic[f], Evaluate@v]}
Run Code Online (Sandbox Code Playgroud)

Manipulate[Plot[f*g, {x, -1, 1}],

 {{v, {{x, x^2, x^3}, ImageSize -> Tiny}}, None},
 Grid[{
   {Style["f(x)="], PopupMenu[Dynamic[f], …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

12
推荐指数
2
解决办法
2133
查看次数

标签 统计

wolfram-mathematica ×1