Hallo,
a) wenn der Kern genauso lang wie dei Liste ist,
dann ist
ListConvolve[kern,list] jawohl
Dot[Reverse[kern],list]
b) ist der Kern kürzer, so ist das erste Element,
wir ahnten es,
Dot[Reverse[kern],Take[list,Length[kern]]]
c) die vollständige Faltung wäre
Dot[Reverse[kern],#] & /@
Partition[list,Length[kern],1]
d) bei einem langen Kern, werden normalerweise
Kern und Daten
Fourier Transformiert, komponentenweise
multipliziert und wieder
zurück transformiert. Es gibt also keine
"low-level" Funktion die
jedes Element einzeln behandelt sondern es gilt
InverseFourier[Fourier[kern]*Fourier[list]]
Regards
Jens
----- Original Message -----
From: "Frank Küster" <frank@XXXXXXX.ch>
To: <demug@XXXXXXX.ch>
Sent: Thursday, October 20, 2005 4:44 PM
Subject: ListConvolve: Berechnung auf das erste
Listenelement beschränken
| Hallo,
|
| Ich möchte mehrfach über großen Datensätzen (bis
zu 4096 Elemente)
| ListConvolve anwenden, aber mich interessiert
immer nur das erste
| Element des Ergebnisses. Die Berechnung dauert
leider ziemlich lange,
| und natürlich wird fast alles davon nachher
weggeworfen.
|
| Gibt es eine Möglichkeit, nur das erste Element
berechnen zu lassen,
| bzw. gibt es low-level-Funktionen, die
ListConvolve verwendet und die
| ich spezieller aufrufen könnte? Bei mir ist der
Kernel immer kürzer
| oder maximal gleichlang wie die Liste, die immer
4096 Elemente hat.
|
| TIA, Frank
| --
| Frank Küster
| Inst. f. Biochemie der Univ. Zürich
| Debian Developer
|
|
|