Extrahierung von Sinus Peaks

Gast #3509806
Hallo,

bei einer Anwendung liegen mir verschiedene Sinusschwingungen vor, die 
alle die gleiche Amplitude besitzen, jedoch unterschiedliche Frequenzen. 
Ziel ist es eine mathematische Überlagerung zu finden, sodass immer wenn 
EINE Sinusschwingung den Wert 1 erreicht, diese auch die "Endfunktion" 
herrausgibt. An den anderen Stellen ist es ziemlich egal, was 
herrausgegeben wird, darf nur nicht 1 sein.

Mein Problem ist offensichtlich eher mathematischer Natur, da die 
Implementation ein Kinderspiel wäre. Ich hatte mir schon überlegt, den 
Wert in jede einzelne Funktion einzusetzen, aber bei ca. 1000 
Sinusschwingungen ist das schon zu viel Rechenaufwand.

Abstrahiert wären es einfach nur Zahlenreihen von periodischen 
Messungen:
3,6,9,12,15...
4,9,14,19,24...
6,17,28,39...

Die Funktion als I/O würde dann folgendes Verhalten aufweisen:

Eingang: 5 --> Ausgang: irgendetwas ungleich 1
Eingang: 4 --> Ausgang: 1

Vielen Dank schonmal für Eure Antworten!
Gast
Fang noch mal ganz von vorn an.
Ich habe nicht die leiseste Vorstellung davon was Du uns mitteilen 
wolltest, was Du machen willst, was Du dazu an Hardware benutzt und was 
genau Deine Frage an uns ist.
Gast
Ich glaube, ich verstehe Dein Ausgangs'problem'. Du hast verschiedene 
Perioden und willst immer wenn eine Periode vorbei ist einen 'ping' 
bekommen.
Nur leider verstehe ich nicht was für eine 'Lösung' Du möchtest:

Frank Hertel schrieb:
> Mein Problem ist offensichtlich eher mathematischer Natur, da die
> Implementation ein Kinderspiel wäre. Ich hatte mir schon überlegt, den
> Wert in jede einzelne Funktion einzusetzen, aber bei ca. 1000
> Sinusschwingungen ist das schon zu viel Rechenaufwand.

Ok. Du willst keine Implementation. Du willst Mathe? Ich nehme mal 
Cosinus statt Sinus, das kannst Du ja anpassen
Dann sei n die Anzahl der 'Cosinusse'(:-)), sei F: N<=n -> R eine 
Funktion die zu jedem Index die Frequenz gibt
dann ist T= U_i {1/F_i k | k Element von N}
die Menge aller 'pings', wobei U die Vereinigung ist, N die natürlichen 
Zahlen

Das hilft Dir vermutlich zwar nicht, aber wenn Du keine Implementation 
brauchst, was dann?
Gast
Zunächst einaml tut es mir Leid, dass ich die Frage ziemlich wirr 
gestellt habe.
Deswegen formulier ich hier noch mal mein Ziel:

Aus verschiedenen Sinusfunktionen unterschiedlicher Frequenz, aber 
gleicher Amplitude soll eine neue Funktion generiert werden, die für 
jedes Maximum eines beliebigen Sinus eine "1" ausgibt. Andernfalls soll 
keine "1" ausgegeben werden.

Zum besseren Verständnis habe ich die Zeichnung angehängt. Die neue 
Funktion soll bei jedem Pfeil eine "1" ausgeben, andernfalls soll sie 
keine "1" ausgeben. Ich hab natürlich nicht alle Pfeile gezeichnet, da 
ich denke das das Prinzip klar geworden ist.

Also, vielen Dank schonmal für Eure Unterstützung.
Angehängte Dateien:
Gast
>Zum besseren Verständnis habe ich die Zeichnung angehängt.

Ein Signal in der Form wie du es gemalt hast gibt es nicht.
Die Amplituden der Sinuswellen addieren sich zu jedem Zeitpunkt.
Frank Hertel schrieb:
> Aus verschiedenen Sinusfunktionen unterschiedlicher Frequenz, aber
> gleicher Amplitude soll eine neue Funktion generiert werden, die für
> jedes Maximum eines beliebigen Sinus eine "1" ausgibt. Andernfalls soll
> keine "1" ausgegeben werden.
>
> Zum besseren Verständnis habe ich die Zeichnung angehängt. Die neue
> Funktion soll bei jedem Pfeil eine "1" ausgeben, andernfalls soll sie
> keine "1" ausgeben.

Also praktisch sowas hier?


Das wäre eine Funktion im mathematischen Sinne einer eindeutigen 
Zuordnung. Das "keine 1 ausgeben" muss man aber schon durch einen 
konkreten Wert ersetzen, z.B. null, sonst ist es ja keine Funktion. 
Außerdem ist eine solche Funktion natürlich unstetig.
Gast
mahwe schrieb:
> für jeden Kanal einen Comparator=> op summierer=> schmitt trigger

Wenn ich Frank richtig verstanden habe - was zugegebenermassen recht 
schwierig ist - liegt ihm nur die Summe aller Signale vor. Sonst wäre 
die Aufgabe ja recht trivial.

Ist das so, muss man erstmal die einzelnen Kanäle trennen und dann 
auswerten, entweder wie bei dir mit Hardware, oder man trennt sie mit 
Software per Fourier-Analyse (da hat er sich auch nicht geäussert was er 
eigentlich haben möchte).

Eine Frage ist auch, wie genau das sein soll, die maximale Amplitude ist 
viel schwieriger zu bestimmen als der Nulldurchgang.

Gruss Reinhard
Was bist du bereit als 'Funktion' zu akzeptieren?

Kannst du ein max benutzen.
Denn wie mir scheint, würde es doch einfach reichen, das Maximum aller 
Einzelfunktionswerte zu bestimmen und wenn dieses 1 ist, dann wird eine 
1 generiert ansonsten eine 0.
Den Vergleich kannst du auch weglassen, wenn dir die Nicht-1 Ergebnisse 
vom Zahlenwert her nicht wichtig sind.

magic(t) = max( s1(t), s2(t), s3(t), ... )
Michael H. schrieb:
> Frank Hertel schrieb:
>> Zum besseren Verständnis habe ich die Zeichnung angehängt. Die neue
>> Funktion soll bei jedem Pfeil eine "1" ausgeben, andernfalls soll sie
>> keine "1" ausgeben.
>
> Vielleicht sowas wie
>
?

Versteh ich nicht. Soll dabei gelten:


Oder wie?

Ähm. Anscheinend geht durch das Zitieren die Formel kaputt. Da steht 
doch am Ende kein > Zeichen?
Also wenn ich das bei Wolfram Alpha eingebe:

http://www.wolframalpha.com/input/?i=%28sin%28t%29-1%29+*+%28sin%282t%29-1%29+*+%28sin%283t%29-1%29+%2B1

sieht das irgendwie nicht nach der Lösung aus...

...oder vielleicht doch. Hm. Ich verstehe nur denn Sinn des Ganzen 
nicht. Warum will man eine Funktion haben, die für eine große Zahl an 
Eingangswerten beliebige Werte (außer 1) ausgibt? Was ist der praktische 
Nutzen davon?
Moderator (Firma: Titel) Persönliche Seite
Mark Brandis schrieb:
> sieht das irgendwie nicht nach der Lösung aus.
Es ist problematisch, weil gefortdert war, dass der Wert 1 nur dann 
auftreten darf, wenn einer der Sinusse 1 ist. Das ist bei der 
angegebenen Formel der Fall. Wenn alle Sinusse != 1 sind, dann kommt 
irgendein anderer Wert heraus.

Glück gehabt, dass es die 1.0 als exakte Fließkommazahl gibt. Mit vielen 
anderen Zahlen geht diese Formel schief...
Gast
Hallo alle zusammen,

nachdem mir letztes Mal so vorzüglich geholfen wurde, wende ich mich 
diesmal wieder an diese überragende community.

Ich besitze die Summe aus mehreren linearen "Treppenfunktionen". Das 
sieht beispielsweise so aus:

Durch die Gaußklammer hat sozusagen jede Funktion nur eine Auswirkung 
auf mein f(x), falls sie einen ganzzahligen Wert erreicht.

Das Problem ist: Wie fasse ich diese linearen Terme zu einem Term 
zusammen?

Wären da nicht die Gaußklammern, könnte man ja alles nach 
Schulmathematik addieren. Im Moment muss ich für jeden Wert zunächst die 
Ergebnisse aller Gaußklammern bestimmen(einfach abrunden) und dann alles 
zusammenzählen.

Problem ist, dass das zu viel Rechenaufwand ist.
Deshalb: Gibt es mathematisch eine Methode diese Funktion zu 
vereinfachen?

Vielen Dank schonmal für eure Hilfe!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.