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.
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?
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!