DMUG-Archiv 2005

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: boxfilter

Hallo,

a) ist FindFit[] nicht eine wesentlich bessere Lösung ?
b) ansonsten

data = { {0.5, -12.4135}, {0.5, -12.4095}, {0.5, -12.3083}, {0.5, -12.2268}, \
{ 0.5, -12.221}, {1., -12.5992}, {1., -12.5505}, {1., -8.73393}, {1.5, \
-12.9427}, {1.5, -12.8677}, {1.5, -12.7359}, {1.5, -12.7172}, {1.5, -12.709}, \
{1.5, -12.4314}, {2., -12.9654}, {2.5, -13.0716}, {2.5, -12.8835}, {2.5, \
-12.7273}, {2.5, -12.6964}, {2.7, -12.823}, {2.7, -12.7983}, {2.7, -12.795}, \
{2.7, -12.3576}, {3., -12.3213}, {3., -12.1941}, {3.8, -12.1865}, {3.8, \
-12.1854}, {4., -12.1367}, {4.3, -12.1156}, {4.3, -12.1058}, {4.3, -12.1033}, \
{5., -12.0626}, {5., -12.0571}, {5., -12.0462}, {5., -12.0448}, {5., \
-12.0295}, {5., -12.0219}, {5., -12.0194} };


BoxAve[data_, width_] := Module[{fget, x},
  x = Union[First /@ data];
  fget[pos_] := Mean[

                Select[data, 

                  First[#] >= pos - width && First[#] <= pos + width &]];
  fget /@ x
]

ListPlot[BoxAve[data, 0.25]]

Gruß

  Jens

  ----- Original Message ----- 
  From: Carsten Panzner 
  To: demug@XXXXXXX.ch 
  Sent: Tuesday, May 24, 2005 4:46 PM
  Subject: boxfilter


  hallo alle zusammen,

  das ist meine erste anfrage, also nicht gleich meckern, wenn ich was unklar formuliert habe *fg
  hier also mein problem

  ich hab einen datensatz, dessen werte eine schwingung darstellen.
  die werte sind gestreut und es existieren manchmal mehrere y werte für eine x-koordinate.

  Beispieldatensatz (Ausschnitt aus der kompletten schwingung):
  ich glaube nicht dass ich den kompletten datensatz als anhang mitschicken darf.
  also wer ihn möchte, bitte keine hemmungen - anfordern.

  { {0.5, -12.4135}, {0.5, -12.4095}, {0.5, -12.3083}, {0.5, -12.2268}, { 0.5, -12.221}, {1., -12.5992}, {1., 
-12.5505}, {1., -8.73393}, {1.5, -12.9427}, {1.5, -12.8677}, {1.5, -12.7359}, {1.5, -12.7172}, {1.5, -12.709}, 
{1.5,-12.4314}, {2., -12.9654}, {2.5, -13.0716}, {2.5, -12.8835}, {2.5, -12.7273}, {2.5,-12.6964}, {2.7, -12.823}, 
{2.7, -12.7983}, {2.7, -12.795}, {2.7,-12.3576}, {3., -12.3213}, {3., -12.1941}, {3.8, -12.1865}, {3.8, -12.1854}, {4., 
-12.1367}, {4.3, -12.1156}, {4.3, -12.1058}, {4.3, -12.1033}, {5.,-12.0626}, {5., -12.0571}, {5., -12.0462}, {5., 
-12.0448}, {5., -12.0295},{5., -12.0219},{5., -12.0194} }

  Über diese werte möchte ich eine art 2 dimensionalen kastenfilter laufen lassen, sodass nach der filterung eine 
geglättete kurve mit einem y wert pro x koordinate entsteht. die breite des filters soll variabel sein. zum beispiel 
sollen also alle y werte von den x koord. 0.5, 1 und 1.5 gemittelt werden und dann auf den mittelwert aller x werte 
geschrieben werden. dann alle y werte mit den koord 1, 1.5 und 2, ..
  randbedingung: man nehme die werte vom anderen ende des datensatzes, da es ja eine volle harmonische schwingung ist.
  ist mit dem obigen ausschnit nicht möglich. doch schon, sieht nur nicht gut aus. ist ja aber auch egal. soll ja nur 
funktionieren

  ich bin schon total am verzweifeln.
  wenn jemand eine lösung findet, wäre ich ihm zu tiefstem dank verpflichtet.

  nochmal: bei bedarf kann ich auch den kompletten datensatz zuschicken.

  1000000 dank im voraus

  grüsse
  carsten

Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html