动态生成Manipulate'滑块'

时间:2012-05-14 22:04:18

标签: wolfram-mathematica

Mathematica的Manipulate函数将最终参数作为您想要滑块的参数列表及其值范围。但为什么不列出清单呢? 通过这种方式,我可以轻松地为我拥有的这一大型转换规则生成所有滑块,例如:

parms = {a -> 2, b -> 4, c -> 5};
Table[{{parms[[i]][[1]], parms[[i]][[2]]}, 0, 10}, {i, 1,Length[parms]}]

{{{a, 2}, 0, 10}, {{b, 4}, 0, 10}, {{c, 5}, 0, 10}}

然而,我想拥有的是:

{{a, 2}, 0, 10}, {{b, 4}, 0, 10}, {{c, 5}, 0, 10}

我现在正在复制细胞之间的粘贴,这是相当混乱的。我相信有更好的方法可以做到这一点。请帮忙,谢谢!

1 个答案:

答案 0 :(得分:3)

有关类似问题,请参阅thisthis

当您用作输入时,您需要Sequence@@来获取要视为所需输出的列表列表。

也许是这样的:

ClearAll[a, b, c];
parms = {a -> 2, b -> 4, c -> 5}; 
With[{values = Table[parms[[i]][[1]], {i, 1, Length[parms]}],
controls = Sequence @@
 Table[{{parms[[i]][[1]], parms[[i]][[2]], 
   Style[ToString[parms[[i]][[1]]], Red, Bold]}, 0, 10}, {i, 1, 
  Length[parms]}]},
Manipulate[values, controls]]

给出了

enter image description here