我有一個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