我有200个数据点的列表。我想选择一个值,并使用操纵函数更改数据以创建错误的数据点,并观察图形上的效果。
我最近的尝试包括创建变量i,并指定如下:
myarray[[80,2]] = i;
然后使用操作:
Manipulate[Curve[myarray], {i, 0, 5}]
然而,这并未提供所需的输出。我这样说并不是真的有意义,但我没有看到另一种方式。任何有关这个特殊问题的帮助将不胜感激!
答案 0 :(得分:2)
制作一些数据和Curve
功能: -
myarray = Transpose[{Range[10], Range[10]/2}];
Curve[myarray_] := ListLinePlot[myarray]
Manipulate[myarray[[8, 2]] = i; Curve[myarray], {i, 0, 5}]
答案 1 :(得分:0)
为了补充Chris Degnen的答案,这显示了一个很好的方法,这里解释了原始代码失败的原因。
Manipulate
与Module
一样,充当范围构造。出于这个原因,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} *)