2012-11-27 83 views
0

我在過去兩天中遇到了這個問題。我正在對兩個不同的數據進行相同的一組操作(涉及動態更新操作)。當每個人都單獨完成我得到正確的輸出,但是當兩個manupulates在同一個筆記本中,第一個操作只是複製第二個。我讀到這與全局變量有關,但作爲一個初學者有點難以理解。如何防止兩個Manupulate函數相互影響?

回答

2

在Manipulate內部訪問和使用的所有變量都應該在Manipulate內部。不要使用全局變量。就這些。即不寫如

x=0 
Manipulate[ x=y+1; 
      x, 
      {{y,0,"y="},0,10,1} 
      ] 

從現在起x是在全球範圍內。但寫

Manipulate[ 
      Module[{x=0}, 
       x=y+1; 
       x 
      ], 
      {{y,0,"y="},0,10,1} 
      ] 

只需要確保沒有使用的變量是全球性的。使用Manipulate中的Modules將代碼分解出來,並使用參數傳遞它們之間的所有內容。

+0

謝謝。我重寫了所有的函數,只包含局部變量。我是mathematica的新手,所以我發現它有點違反直覺,默認情況下變量是全局的。 – BobLoblaw