Extrahierung von Sinus Peaks

Gast #3509806
Lesenswert?

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 #3510320
Lesenswert?

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 #3510595
Lesenswert?

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 #3510824
Lesenswert?

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:
#3510937
Lesenswert?

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 #3511482
Lesenswert?

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
#3511489
Lesenswert?

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), ... )
#3511630
Lesenswert?

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?
#3511641
Lesenswert?

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 #3511682
Lesenswert?

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 #3515320
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren