2014-02-27 18 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} *) 
相關問題