Das Root-Raised-Cosine-Filter, abgekürzt RRC-Filter, ist ein in der digitalen Signalverarbeitung angewandtes elektronisches Filter, welches zur Formung von Signalimpulsen zur Übertragung über einen Kanal, wie beispielsweise einen Funkkanal, verwendet wird.
Allgemeines Das Root-Raised-Cosine-Filter entspricht der Wurzel (engl. root) aus dem Raised-Cosine-Filter und dient dazu, die Charakteristik des Raised-Cosine auf Sender und Empfänger gleichmäßig zu verteilen. Es stellt dann ein so genanntes Matched Filter dar und maximiert im Empfänger das Signal-Rausch-Verhältnis. Eine Besonderheit ist, dass ein Root-Raised-Cosine-Filter für sich alleine Intersymbolinterferenz (ISI) aufweist, das heißt die einzelnen Sendeimpulse „fließen“ am Übertragungskanal zeitlich ineinander. Erst die Kombination der beiden RRC-Filter bei Sender und Empfänger ergeben zusammen über die gesamte Strecke im Idealfall eine ISI-freie Übertragungsstrecke, welche eine zeitliche Unterscheidung der einzelnen Impulse erlaubt. Die einzelnen RRC-Impulse stehen orthogonal zueinander.
Das Root-Raised-Cosine-Filter ist neben dem Gauß-Filter eines der am häufigsten eingesetzten Filter zur Impulsformung bei digitalen Übertragungssystemen.
Übertragungsfunktion miniatur|500px|rechts|Impulsantwort h(t) eines RRC für verschiedene roll-off-Faktoren β Der Betragsverlauf der Übertragungsfunktion Hrrc(jω) eines RRC-Filters ist gegeben durch:
wobei Hrc(jω) die Übertragungsfunktion des Raised-Cosine-Filters darstellt.
Die Impulsantwort h(t) eines RRC-Filters ist durch den Roll-off-Faktor β, welcher die Bandbreite bestimmt, und die Dauer eines Sendesymbols Ts gekennzeichnet und besitzt folgende Form:
Beispiel-Implementierung Nachfolgend findet sich eine Beispiel-Implementierung des RRC-Filters in Python mit Hilfe von NumPy, wobei die dafür verwendete Formel aus entnommen wurde.import numpy as np
def rrcosfilter(N, beta, Ts, Fs): """ Erzeugt ein Root-Raised-Cosine-Filter, welches symmetrisch zum Mittelpunkt verläuft. Parameter:
N : int Anzahl der Filterpunkte. beta : float Roll-Off Faktor im Intervall [0, 1]. Ts : float Die Symbolperiode (inverse der Symbolrate) in Sekunden. Fs : float Die Abtastrate in Hertz. Rückgabe:
h_rcc : numpy.ndarray Die Impulsantwort des Filters als NumPy-Array. """
T_delta = 1/float(Fs) sample_num = np.arange(N) h_rrc = np.zeros(N, dtype=float)
for x in sample_num: t = (x-N//2)*T_delta if t == 0.0: scaling = 1/np.sqrt(Ts) equation = 1-beta+(4*beta/np.pi) h_rrc[x] = scaling * equation elif beta != 0 and t == (Ts/(4*beta) or -Ts/(4*beta)): scaling = beta/np.sqrt(2*Ts) equation = (1+(2/np.pi))*np.sin(np.pi/(4*beta)) + (1-2/np.pi)*np.cos(np.pi/(4*beta)) h_rrc[x] = scaling * equation else: scaling = 1/np.sqrt(Ts) numerator = np.sin(np.pi*(1-beta)*t/Ts) + (4*beta*t/Ts)*np.cos(np.pi*(1+beta)*t/Ts) denominator = (np.pi*t/Ts)*(1-np.square(4*beta*t/Ts)) equation = numerator / denominator h_rrc[x] = scaling * equation return h_rrc
sample_rrc = rrcosfilter(N=189, beta=0.22, Ts=1e-5, Fs=100e6)
Literatur
Einzelnachweise
Kategorie:Filter (Elektrotechnik) Kategorie:Digitale Signalverarbeitung