Wyjaśnić tę notację DSP

głosy
3

Staram się realizować tę extenstion z Karplus-silnego algorytmu strun szarpanych, ale nie rozumieją notacji tam używany. Może to zajmie lata studiów, ale być może nie będzie - Może ty mi powiesz.

Myślę poniżej równania są w dziedzinie częstotliwości, czy coś. Tylko począwszy od pierwszego równania, H p (Z), filtru dolnoprzepustowego kierunku odbiór. Na jednym kierunku użyć p = 0, dla innych, być może 0,9. Sprowadza się na 1 w pierwszym przypadku lub 0,1 / (1 - 0,9 oo -1 ) w drugim.

alt text http://www.dsprelated.com/josimages/pasp/img902.png

Teraz czuję, może to oznaczać, pod względem kodowania, coś w kierunku:

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

Czy ktoś może dać mi wskazówkę? Czy jest to daremne i naprawdę muszę cały tła DSP do wdrożenia tego? I był matematykiem raz ... ale to nie jest moja domena.

Utwórz 17/12/2009 o 01:34
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
7

Więc oo -1 oznacza po prostu opóźnienie jednego urządzenia.

Weźmy H s = (1-P) / (1-PZ -1 ).

Jeśli zgodnie z konwencją „X” dla wejścia i „Y” dla wyjścia, transmitancja H = y / x (= wejść / wyjść)

więc uzyskać y / x = (1-P) / (1-PZ -1 )

lub (1-p) X = (PZ-1 -1 ) y

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

lub: y [n] = PY [n-1] + (1-p) x [n]

W kodzie C może to być realizowane

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

bez dodatkowego państwa poza pomocą wyjścia „Y” jako samej zmiennej stanu. Czy można przejść do bardziej dosłownego podejścia:

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

Jeśli chodzi o pozostałe równania iść, są wszystkie typowe dla tego równania z wyjątkiem drugiego równania który wygląda jak może to sposób wyboru albo H Β = 1-z -1 lub 1-Z -2 . (co jest N?)

Filtry są trochę niejasne i będą trudniejsze, aby radzić sobie z chyba można znaleźć paczkowanych filtrów. Na ogół są one w formie

H = H0 * (1 + AZ -1 + BZ -2 + CZ -3 ...) / (1 + rz -1 + SZ -2 + tz -3 ...)

a wszystko co musisz zrobić to zapisać H = y / x, aby pomnożyć krzyż

H0 * (1 + AZ -1 + BZ -2 + CZ -3 ...) * x = (1 + rz -1 + SZ -2 + tz -3 ...) * Y

a następnie izolować „y” od siebie, dzięki czemu sygnał wyjściowy „Y” jest liniową funkcją różnych opóźnień siebie i wejścia.

Ale projektując filtry (Picking a, b, c, itd.) Jest trudniejsze niż ich realizacji, w przeważającej części.

Odpowiedział 17/12/2009 o 01:48
źródło użytkownik

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