Hallo,
ich bin hier gerade am leichten verzweifeln da mich mein Mathematikverstand hier wieder völlig im Stich lässt...
(mann könnte auch sagen bin zu blöd dafür )
Ich habe also einen 31Band software EQ und möchte aber nur
8 Frequenzbänder einstellen. Die Frequenzen dazwischen muss ich
natürlich angleichen.
Linear ist es ja kein Problem - ich möchte aber gerne das sich eine
harmonische Sinusartige kurve ergiebt.
(wenns zu komliziert wird lasse ich es linear)
Nur um mal ausgedachte Werte in den Raum zu werfen:
(1.0 = +- 0dB )
Also vereinfacht:
17.0 : 1.0 : 1.0: 12.0 : 1.0 : 1.0 : 5.0 : 1.0 : 1.0 : 10.0 usw...
Linear (logo):
17.0 : 15.3 : 13.6 : 12.0 usw....
Aber wie ist denn der andere Ansatz?
Werte harmonisch interpolieren
ja is mir klar... vergiß einfach die db - Angabe.
Mein Problem vielleicht etwas allgemeiner:
Ich habe ein x/y Koordinatensystem auf dem ich ein paar Punkte
eingetragen habe und möchte ein paar Zwischenwerte haben.
Nun möchte ich nicht einfach -bildlich gesprochen eine gerade linie zwischen diesen Punkten ziehen
sondern das ganze so verbinden als ob ich ein Kurvenlineal angesetzt habe.
Nutzen wollt ich es halt für den EQ, allerdings interessiert mich das ganze
auch einfach...
Verständlicher?
Mein Problem vielleicht etwas allgemeiner:
Ich habe ein x/y Koordinatensystem auf dem ich ein paar Punkte
eingetragen habe und möchte ein paar Zwischenwerte haben.
Nun möchte ich nicht einfach -bildlich gesprochen eine gerade linie zwischen diesen Punkten ziehen
sondern das ganze so verbinden als ob ich ein Kurvenlineal angesetzt habe.
Nutzen wollt ich es halt für den EQ, allerdings interessiert mich das ganze
auch einfach...
Verständlicher?
Ich verstehe nicht, wie das die Fragestellung beantwortet. *kopfkratz* Für mich klang die ganz nach gewöhnlicher Interpolation (wozu man scipy.signal nehmen kann). Kann mir jemand sagen, wie die Fragestellung besser zu verstehen ist? (bin neugierig)
Gruß,
Christian
Gruß,
Christian
Da bin ich mir auch noch nicht sicher... scipy.signal - interessant aberIch verstehe nicht, wie das die Fragestellung beantwortet.
da schnall ich ja erst recht ab.
Ich will einfach nur die (*) Punkte mit ner harmonischen Kurve verbinden
und jeden belieben Punkt ermitteln können.
(. musste ich nehmen damit die Formatierung funktioniert.)
- mach gerade etwas Nachhilfe in Mathe
Also nur um deine Frage nochmal zu beantworten.
Polynom? Wenn ich mir die funktion anschaue - dann muss ich wohl
noch viel nachlesen bis ichs kapiert habe.
@HWK: Hast Du da ein kurzes Beispiel?
|
|......*
|.......................*
|................*
|----------------------
|
|.........*
|
|
|*
Wieso mit Kanonen auf Spatzen schießen? Für die zwei Punkte auf einer definierten Funktion muss ich nichts fitten, das kann man einfach ausrechnen. Und erst recht nicht brauche ich dafür eine zusätzliche Abhängigkeit in Form von numpy oder scipy.HWK hat geschrieben:Ob der Sinus so schön ist? Du könntest ja mit numpy.polyfit ein Polynom durch die 8 Punkte berechnen. Mit numpy.poly1d erhälst Du dann die Werte in den Zwischenräumen auf dem Polynom.
Und selbstverständlich hab ich mich dabei auch vertan:
Code: Alles auswählen
(f2-f1)/2*(sin(x-pi/2)+1)+f1
Man müsste halt einmal ausprobieren, welche Variante bessere Ergebnisse liefert. Hier ein Beispiel zu den anfangs ausgedachten Werten:MfG
HWK
Code: Alles auswählen
>>> from numpy import *
>>> x = array([0, 3, 6, 9])
>>> y = array([17, 12, 5, 10])
>>> z = polyfit(x, y, 3)
>>> p = poly1d(z)
>>> p([1, 2, 4, 5, 7, 8])
array([ 16.41975309, 14.58024691, 9.19753086, 6.69135802,
4.64197531, 6.13580247])
HWK
Warum sollte ein *Fit* mir irgendeinem dahergelaufenen Polynom bessere Ergebnisse liefern, als die exakte Lösung? Sorry, aber für das Bedürfnis irgendwas fitten zu wollen, was man auch einfach ausrechnen kann fehlt mir das Verständnis. Das kostet doch auch Rechenzeit...HWK hat geschrieben:Man müsste halt einmal ausprobieren, welche Variante bessere Ergebnisse liefert.
Na ja, wenn es eine analytische Lösung gibt, klar, dann kann mans einfach berechnen. Aber bei "echten" Signalen, gibt es u. U. nur eine numerische Lösung. In diese Richtung zielte meine Frage. Dann nämlich muß man sich die Daten näher anschauen und auch wissen welche (physikalischen) Bedingungen herrschen. Sonst nämlich kann eine schöne und schnelle Lösung auch eine falsche sein.
Wie auch immer, wenn die Frage mit Deiner Antwort, Darii, beantwortet ist, ist ja alles in Butter.
Gruß,
Christian
Wie auch immer, wenn die Frage mit Deiner Antwort, Darii, beantwortet ist, ist ja alles in Butter.
Gruß,
Christian
Ebenfalls sorry, aber für diese Überheblichkeit fehlt mir auch das Verständnis. Wie kommst Du darauf, dass der Sinus die exakte Interpolation zwischen zwei Frequenzen sein muss? Selbst, wenn dem so wäre, dann solltest Du nicht unnötig das math-Modul laden und Rechenzeit vergeuden, sondern die beiden Zwischenpunkte einfach so berechnen:Darii hat geschrieben:Warum sollte ein *Fit* mir irgendeinem dahergelaufenen Polynom bessere Ergebnisse liefern, als die exakte Lösung? Sorry, aber für das Bedürfnis irgendwas fitten zu wollen, was man auch einfach ausrechnen kann fehlt mir das Verständnis. Das kostet doch auch Rechenzeit...
Code: Alles auswählen
dy = y2 - y1
y1_1 = y1 + 0.25 * dy
y1_2 = y1 + 0.75 * dy
HWK
Weil der Threadstarter das so wollte?HWK hat geschrieben:Wie kommst Du darauf, dass der Sinus die exakte Interpolation zwischen zwei Frequenzen sein muss?
Wunderbar, das reicht doch.Selbst, wenn dem so wäre, dann solltest Du nicht unnötig das math-Modul laden und Rechenzeit vergeuden, sondern die beiden Zwischenpunkte einfach so berechnen:MfGCode: Alles auswählen
dy = y2 - y1 y1_1 = y1 + 0.25 * dy y1_2 = y1 + 0.75 * dy
HWK