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!
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.
Du meinst vielleicht "wenn EINE der Sinusfunktionen die maximale Amplitude erreicht, dann soll der Wert eins ausgegeben werden, ansonsten null"? Aber ja, das ist geraten. Eine Skizze könnte hilfreich sein.
Hallo! Man kann Probleme nur lösen, wenn man in der Lage ist, sie zu beschreiben. Selbst ich kann aus Deiner Schilderung keinen sinnvollen Zusammenhang erkennen. Also: versuche es noch mal.
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?
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.
>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: > 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
?
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.
realisierung: für jeden Kanal einen Comparator=> op summierer=> schmitt trigger
>> Schöne Lösung!
Dem kann ich nur zustimmen. Herzlichen Dank für die Unterstützung. Mein
Problem wurde gelöst!
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?
:
Bearbeitet durch User
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?
:
Bearbeitet durch User
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...
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.