2014-02-27 19 views
2

我有一个200个数据点的列表。我想选择一个值,并使用操作函数更改数据以创建一个不良数据点,并观察图上的效果。在数学中操作列表中的一个元素

我最近的尝试包括创建的变量i,和分配等:

myarray[[80,2]] = i; 

,然后使用操纵这样:

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

这不给所期望的输出,但是。对我来说这并没有意义,但我没有看到另一种方式。任何有关这个问题的帮助将不胜感激!

回答

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

+0

非常感谢您的帮助!我还有另外一个问题。是否有可能像这样创建操作?操纵[myarray [[8,2]] = i; somefunction [myarray],{i,0,5}]?我需要将myarray传递给另一个函数,并且它必须在该函数内部进行操作。我对mathematica有点新,所以我不知道这是否是一个内置的操作特性。 – user3334871

+0

其实,没关系,我看你在你的文章中就是这么做的。一切工作完美,非常感谢你的帮助! – user3334871

0

为了补充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} *) 
相关问题