Forum: PC Hard- und Software Algorithmus zur Bestimmung der Hüllkurve eines Arrays


von Anfänger (Gast)


Lesenswert?

Hallo Leuts,

wenn ich eine zeitdiskrete Funktion in Form eines Arrays vorliegen habe, 
gibt es einen Algorithmus, wie ich daraus die Hüllkurve der Funktion 
bestimmen kann?

Ich habe bereits in Google geschaut und bin dabei z.B. auf den Begriff 
"Einhüllende" gekommen.

Hat jemand von Euch vielleicht einen Link z.B. zu einem C-Quellcode, mit 
dem ich das hinbekommen kann?

Über eine Antwort würde ich mich freuen.

von Floh (Gast)


Lesenswert?

Eine Hüllkurve eines Signals ist letztendlich eine AM-Dekodierung, die 
z.B. mittels Gleichrichtung und Tiefpass erzeugt werden kann.
Oder man sucht immer nach lokalen Extrempunkten und verbindet diese. 
Führt allerdings nicht unbedingt zum selben Ergebnis, daher wäre es 
angebracht, ein bisschen mehr über das Projekt zu erzählen.
:-)

von Anfänger (Gast)


Lesenswert?

Einfaches Beispiel - ein Wegaufnehmer an einer Feder, die mit 
Vorspannkraft beaufschlagt (Offset) und durch einen Impuls angeregt 
wird. Ich taste das Wegsignal z.B. 300mal in der Sekunde ab und bekomme 
lauter Messdaten. Stelle ich die Daten im Graphen da, sehe ich einen 
abklingenden harmonischen Oszillator. Von diesem Oszillator, der als 
Array mit z.B. 15.000 Messwerten vorliegt, möchte ich die Hllkurve 
herausbekommen.

von Paule H. (stk500-besitzer)


Lesenswert?

lokales Maximum mit der Steigung = 0?
Damit hätte man die Punkte, die man miteinander zur Hüllkurve verbinden 
müsste.
Kann aber auch sein, dass ich komplett daneben liege...

von Dumdi D. (dumdidum)


Lesenswert?

Hilberttransformation

von Martin (Gast)


Lesenswert?

Was im folgenden Code geklärt werden sollte:

soll es  max=max*0.99  heissen,  d.h.  exponentielle "Entladung"
des Speicherelementes  das sich  den Hüllkurvenwert "merkt",
oder  max=max-0.001


Die Wahl der Parameter hängt  davon  ab  wie  oft ich  die
Kurve sample,  10x  oder  100x  zwischen  Nulldurchgängen,
und was letztlich "schöner"  im Endergebnis aussieht.

Probieren geht  über studieren in diesem Fall.





double * huellkurve(double * array){

int i,len;
double * kurve;
double maxx;
len=length(array); // length : do it yourself

kurve=malloc(sizeof(double)*len));

maxx=array(0);
kurve=maxx;  // erster punkt der huellkurve= erster punkt der
             // zu untersuchenden kurve

for(i=1;i<len;i++) {
  if(maxx<array(i)) maxx=array(i);
  else maxx=maxx*0.99;   // alternativ:  maxx=maxx-0.0001;
  kurve(i)=maxx;
}// for i


return kurve;  //  hinter freee() nicht vergessen
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.