Erklären Sie diese DSP-Notation

stimmen
3

Ich versuche zu implementieren diese extenstion des Karplus-Strong gezupften Saite Algorithmus, aber ich verstehe nicht die Notation dort verwendet. Vielleicht wird es Jahre der Studie nehmen, aber vielleicht wird es nicht - vielleicht können Sie mir sagen.

Ich denke , die folgenden Gleichungen sind in der Frequenzdomäne oder so etwas. Gerade beginnend mit der ersten Gleichung, H p (z), der Tiefpaßfilter Auswahlrichtung. Für eine Richtung verwenden Sie p = 0, für den anderen, vielleicht 0,9. Dies läuft darauf hinaus, auf 1 im ersten Fall nach unten, oder 0,1 / (1 bis 0,9 z -1 ) in den zweiten.

Alt-Text http://www.dsprelated.com/josimages/pasp/img902.png

Nun fühle ich mich wie könnte dies bedeuten, bei der Codierung ausgedrückt, etwas in Richtung:

H_p(float* input, int time) {
  if (downpick) {
    return input[time];
  } else {
    return some_function_of(input[t], input[t-1]);
  }
}

Kann mir jemand einen Tipp geben? Oder ist das sinnlos und ich wirklich brauchen alle DSP Hintergrund dies zu implementieren? Ich war ein Mathematiker einmal ... aber das ist nicht meine Domäne.

Veröffentlicht am 17/12/2009 um 01:34
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
7

So ist die z -1 bedeutet nur eine Ein-Einheitsverzögerung.

Lassen Sie uns H nehmen p = (1-p) / (1-pz -1 ).

Wenn wir die Konvention von „x“ für die Eingabe und „y“ für die Ausgabe, die Übertragungsfunktion H = y / x (= Ausgang / Eingang) folgen

so erhalten wir y / x = (1-p) / (1-pz -1 )

oder (1-p) x = (1-pz -1 ) y

(1-p) x [n] = y [n] - py [n-1]

oder: y [n] = py [n-1] + (1-p) x [n]

In C-Code kann dies umgesetzt werden

y += (1-p)*(x-y);

ohne zusätzlichen Zustand der Ausgabe „y“ als eine Zustandsvariable selbst über die Verwendung. Oder Sie können für den wörtlichen Ansatz gehen:

y_delayed_1 = y;
y = p*y_delayed_1 + (1-p)*x;

Was die anderen Gleichungen gehen, sind sie alle typischen Gleichungen , außer dass die zweite Gleichung , die wie vielleicht sieht es ist ein Weg , entweder H der Auswahl Β = 1-z -1 OR 1-z -2 . (was ist N?)

Die Filter sind so eine Art vage und sie werden härter für Sie zu tun, es sei denn Sie einige abgepackten Filter finden. Im Allgemeinen sind sie von der Form

H = H0 * (1 + az -1 + bz -2 + cz -3 ...) / (1 + rz -1 + sz -2 + tz -3 ...)

und alles, was Sie tun, ist aufschreiben H = y / x, mehrfach kreuzen zu erhalten

H0 * (1 + az -1 + bz -2 + cz -3 ...) * x = (1 + rz -1 + sz -2 + tz -3 ...) * y

und dann Isolieren „y“ von selbst, so dass der Ausgang „y“ eine lineare Funktion der verschiedenen Verzögerungen von sich selbst und des Eingangs.

Aber die Gestaltung Filter (Kommissionierung des a, b, c, usw.) Ist härter als sie umzusetzen, zum größten Teil.

Beantwortet am 17/12/2009 um 01:48
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more