나는 ListPlot에서 포인트를 추출하여 더 많은 계산에 사용할 수있는 무언가를 모으려고 노력해 왔습니다. 나의 현재 접근 방식은 Locator []로 포인트를 선택하는 것이다. 이 점을 표시하려면 잘 작동하지만 머리 동적 [] 함께 구조에서 숫자 값을 추출하는 방법을 알아낼 수 없습니다. 다음은 자체 포함 된 예입니다. 회색 로케이터를 끌어서 점을 선택할 수 있어야합니다 (핑크 로케이터로 표시되고 q
에 저장 됨, 두 요소 목록). 이것은 플롯 아래의 두 번째 줄입니다. 이제 q [[2]]를 함수에 전달하거나 간단히 표시하고 싶습니다. 그러나 Mathematica는 q
을 머리 Dynamic
이있는 단일 엔티티로 취급하므로 두 번째 부분을 차지하는 것이 불가능합니다 (따라서 오류 메시지). 누구든지 q
을 정규리스트로 변환하는 방법에 관한 정보를 얻을 수 있습니까?Dynamic [] 구조체를 숫자 목록으로 변환
EuclideanDistanceMod[p1_List, p2_List, fac_: {1, 1}] /;
Length[p1] == Length[p2] :=
Plus @@ (fac.MapThread[Abs[#1 - #2]^2 &, {p1, p2}]) // Sqrt;
test1 = {{1.`, 6.340196001221532`}, {1.`,
13.78779876355869`}, {1.045`, 6.2634018978377295`}, {1.045`,
13.754947081416544`}, {1.09`, 6.178367702583522`}, {1.09`,
13.72055251752498`}, {1.135`, 1.8183153704413153`}, {1.135`,
6.082497198000075`}, {1.135`, 13.684582525399742`}, {1.18`,
1.6809452373465104`}, {1.18`, 5.971583107298081`}, {1.18`,
13.646996905469383`}, {1.225`, 1.9480537697339537`}, {1.225`,
5.838386922625636`}, {1.225`, 13.607746407088161`}, {1.27`,
2.1183174369679234`}, {1.27`, 5.669799095595362`}, {1.27`,
13.566771130126131`}, {1.315`, 2.2572975468163463`}, {1.315`,
5.444014254828522`}, {1.315`, 13.523998701347882`}, {1.36`,
2.380307009155079`}, {1.36`, 5.153024664297602`}, {1.36`,
13.479342200528283`}, {1.405`, 2.4941312539733285`}, {1.405`,
4.861423833512566`}, {1.405`, 13.432697814928654`}, {1.45`,
2.6028066447609426`}, {1.45`, 4.619367407525507`}, {1.45`,
13.383942212133244`}};
DynamicModule[{p = {1.2, 10}, q = {1.3, 11}},
q := [email protected]
[email protected][[
Ordering[{#, EuclideanDistanceMod[p, #, {1, .1}]} & /@ test1,
1, #1[[2]] < #2[[2]] &]]];
Grid[{{Show[{ListPlot[test1, Frame -> True, ImageSize -> 300],
[email protected][Dynamic[p]],
[email protected]
Locator[q, Appearance -> {Small},
Background -> Pink]}]}, {[email protected]}, {q},{q[[2]]}}]]
+1 : 완전히 뒤죽박죽입니다. '동적'은 제거 할 수있는 것처럼 보이지 않습니다. 나는 FullForm에서 q를 보았고 잡을 것이 없다. 내부가 표시 될 때까지 평가되지 않은 상태로 유지됩니다. 나는'x = q'를 설정하려했지만 디스플레이 문제로 인해 '동적'이 전송되었습니다. – rcollyer