2011-07-03 41 views
0

我希望能夠儘快正確地命名該問題。MapThread,操縱,在Mathematica中過濾

請考慮:

list1 = Tuples[Range[1, 5], 2]; 

list2 = Tuples[Range[3, 7], 2]; 

* 我用下面的機制顯示器中顯示所有過濾的眼睛注視。 *

Manipulate[Row[ 
       MapThread[Function[{list}, 
         Graphics[ 
         Point[{#[[1]], #[[2]]}]& /@ Select[list, 
                (#[[1]] > f1 && #[[2]] > f2) &], 
         Frame -> True, PlotRange -> {{0, 10}, {0, 10}}]], 
       {{list1, list2}}]], 
{f1, 0, 10}, {f2, 0, 10}] 

現在,我想顯示每個固定(點)一次一個,累積。

即:

鑑於

list1 = {{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 1}, {2, 2}, {2, 3}, {2, 4}, 
     {2, 5}, {3, 1}, {3, 2}, {3, 3}, {3, 4}, {3, 5}, {4, 1}, {4, 2}, {4, 3}, 
     {4, 4}, {4, 5}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}} 

使用滑塊來這裏顯示1到25分。但是,在將1過濾爲長度@過濾數據後,控制固定編號的滑塊仍具有固定邊界(25),而其應具有等於過濾列表的長度的滑塊。

但是有2個歸因於Mapthread

而且我不能將Mapthread擴展到Manipulate控制,對嗎?

Manipulate[Row[MapThread[Function[{list}, 
         Graphics[ 
         Point[{#[[1]], #[[2]]}]& /@ Select[list, 
                (#[[1]] > f1 && #[[2]] > f2) &] 
                [[1 ;; dd, All]], 
         Frame -> True, PlotRange -> {{0, 10}, {0, 10}}]], 
       {{list1, list2}}]], 
{f1, 0, 10}, {f2, 0, 10},{dd,0,25}] 
+0

我tryoing明白_Now,我想在一個時間顯示每個固定(點)一個,累積._ –

+0

@Belisarius,我希望這是更好的。我很難從真實案例中抽象出來,我會上傳我的數據。展示真實的情境。 – 500

+0

@ Belisarius,NB上載在http://www.laeh500.com/LAEH/Voronoi.html我從來沒有真正編碼1個半月前,所以這款筆記本也是真正的論壇之一。如果沒有這38個問題和驚人的答案,我將永遠無法接近!我留下了有問題的Manipulate,但您可以觀察操縱底部的Steps Controls的錯誤!非常感謝您提供的任何幫助! – 500

回答

2

也許是這樣的:

(謹防代碼效率)

list1 = Tuples[Range[1, 5], 2]; 
list2 = Tuples[Range[3, 7], 2]; 
f = (Select[#, (#[[1]] > f1 && #[[2]] > f2) &] &); 
Manipulate[ 
[email protected][[email protected]#, Frame -> True, PlotRange -> {{0, 10}, {0, 10}}] & /@ 
    Map[Map[f, {#}][[All, 1 ;; Min[dd, Length @@ Map[f, {#}]], All]] &, 
    {list1, list2}], 
    {f1, 0, 10}, {f2, 0, 10}, {dd, 0, 25, 1}] 

enter image description here

+0

問題解決了謝謝,我不得不嘗試在am中實現這個。 「小心代碼效率」與你的筆記本電腦相比,究竟是什麼意思:)? – 500

+0

@ 500我正在評估'f'兩次......對於很多應該糾正的問題...... –

1

試用{dd, 0, 25, 1}。這兩者都允許它正確解析(閉合大括號)並保持真實,可以這麼說,通過防止dd被實際估價。