|
Hallo Frank Wenn man $MessagePrePrint = Identity setzt um lange Fehlermeldungen zu bekommen und dann Fehler mit einer unbekannten testfunktion `ochse' provoziert, sieht man, dass nur 2 Tests auf der Liste stattfinden, statt 3. (Es wurde Off[General::Stop] gesetzt zur Sicherheit). Laut Mma-Book (Wolfram) muss man das Union auf _einer_ List machen, um das Wegwerfen als gleich angesehener Elemente zu erreichen (es findet sonst nur innerhalb der Teillisten statt). ###### file erdbeben.m ###### cat1 =. cat1 = {{7.683, 50.15, 1846, 7, 29, 4.98, 10, 21, 24.}, {7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}}; cat2 =. cat2 = {{7.682, 50.157, 1846, 7, 29, 5.5, 10., 21, 24.}}; (* Ich moechte nun beide so kombinieren, dass der Test auf Gleichheit nur auf den "Spalten" 3,4,5,8,9 gemacht wird, was dem Datum und Uhrzeit entspricht. Mit andern Worten, ich moechte dafuer sorgen dass die Beben die mit der gleichen Uhrzeit gemeldet werden, nicht doppelt weiterverarbeitet werden. *) Clear[stest] stest[x_, y_] := (N[Join[Take[x, {3, 5}], Take[x, {8, 9}]]] == N[Join[Take[y, {3, 5}], Take[y, {8, 9}]]]) && VectorQ[x] && VectorQ[y] cat0 =. cat0 = Join[cat1, cat2]; Print["Length[cat0]:", Length[cat0]] cat3 =. cat3 = Union[cat0, SameTest -> (ochse[#1, #2]&)]; cat3 // TableForm ####### eof ###### Gibt den output: bamako::In[1]:= $MessagePrePrint = Identity bamako::Out[1]= Identity bamako::In[2]:= Off[General::Stop] bamako::In[3]:= <<erdbeben.m Length[cat0]:3 Union::smtst: SameTest function (ochse[#1, #2] & )[{7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}, {7.682, 50.157, 1846, 7, 29, 5.5, 10., 21, 24.}] evaluates to ochse[{7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}, {7.682, 50.157, 1846, 7, 29, 5.5, 10., 21, 24.}]. Union::smtst: SameTest function (ochse[#1, #2] & )[{7.683, 50.15, 1846, 7, 29, 4.98, 10, 21, 24.}, {7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}] evaluates to ochse[{7.683, 50.15, 1846, 7, 29, 4.98, 10, 21, 24.}, {7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}]. bamako::Out[3]//TableForm= > 7.682 50.157 1846 7 29 5.5 10. 21 24. 7.683 48.117 1825 11 24 2.8 4 1 0. 7.683 50.15 1846 7 29 4.98 10 21 24. bamako::In[4]:= $Version bamako::Out[4]= Solaris 3.0 (August 21, 1997) Man sieht, dass ueberhaupt nur 2 Vergleiche angestellt werden, auf einer Liste der Laenge 3 sind aber 3 Vergleiche anzustellen. Also ein bug, wenn ich das richtig sehe. Ueber Mma 4.0 kann ich nichts sagen, das ist hier nicht installiert. Gru3 Udo. |