我有一个200个数据点的列表。我想选择一个值,并使用操作函数更改数据以创建一个不良数据点,并观察图上的效果。在数学中操作列表中的一个元素
我最近的尝试包括创建的变量i,和分配等:
myarray[[80,2]] = i;
,然后使用操纵这样:
Manipulate[Curve[myarray], {i, 0, 5}]
这不给所期望的输出,但是。对我来说这并没有意义,但我没有看到另一种方式。任何有关这个问题的帮助将不胜感激!
我有一个200个数据点的列表。我想选择一个值,并使用操作函数更改数据以创建一个不良数据点,并观察图上的效果。在数学中操作列表中的一个元素
我最近的尝试包括创建的变量i,和分配等:
myarray[[80,2]] = i;
,然后使用操纵这样:
Manipulate[Curve[myarray], {i, 0, 5}]
这不给所期望的输出,但是。对我来说这并没有意义,但我没有看到另一种方式。任何有关这个问题的帮助将不胜感激!
制作了一些数据和Curve
功能: -
myarray = Transpose[{Range[10], Range[10]/2}];
Curve[myarray_] := ListLinePlot[myarray]
Manipulate[myarray[[8, 2]] = i; Curve[myarray], {i, 0, 5}]
为了补充Chris Degnen的回答,表现出了良好的做法,这里是为什么你的原始代码的失败的解释。
Manipulate
,如Module
,充当范围构建。出于这个原因由Manipulate
(操纵变量)中使用的i
不是相同i
作为设定myarray[[80, 2]] = i;
- 它存在于一个不同Context
:
Manipulate[Context[i], {i, 0, 5}]
(* FE` *)
这是问题的最小例如:
解决此ClearAll[x, i]
x = i;
Manipulate[{x, i}, {i, 0, 5}]
(* {i, 2.24} *)
的一种方法是使用Block
,但你需要使用不同的名称为操纵变量:
ClearAll[x, i]
x = {1, 2, i};
Manipulate[Block[{i = ii}, x], {ii, 0, 5}]
(* {1, 2, 1.41} *)
非常感谢您的帮助!我还有另外一个问题。是否有可能像这样创建操作?操纵[myarray [[8,2]] = i; somefunction [myarray],{i,0,5}]?我需要将myarray传递给另一个函数,并且它必须在该函数内部进行操作。我对mathematica有点新,所以我不知道这是否是一个内置的操作特性。 – user3334871
其实,没关系,我看你在你的文章中就是这么做的。一切工作完美,非常感谢你的帮助! – user3334871