在mathematica中操作列表中的一个元素

时间:2014-02-27 22:22:37

标签: wolfram-mathematica

我有200个数据点的列表。我想选择一个值,并使用操纵函数更改数据以创建错误的数据点,并观察图形上的效果。

我最近的尝试包括创建变量i,并指定如下:

myarray[[80,2]] = i;

然后使用操作:

Manipulate[Curve[myarray], {i, 0, 5}]

然而,这并未提供所需的输出。我这样说并不是真的有意义,但我没有看到另一种方式。任何有关这个特殊问题的帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

制作一些数据和Curve功能: -

myarray = Transpose[{Range[10], Range[10]/2}];
Curve[myarray_] := ListLinePlot[myarray]
Manipulate[myarray[[8, 2]] = i; Curve[myarray], {i, 0, 5}]

enter image description here

答案 1 :(得分:0)

为了补充Chris Degnen的答案,这显示了一个很好的方法,这里解释了原始代码失败的原因。

ManipulateModule一样,充当范围构造。出于这个原因,i(操作变量)使用的Manipulate不是与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} *)