2017-11-02 4 views
2

Ich habe etwas Verwirrung über die Terminologien und die Simulation eines FIR-Systems. Ich werde die Hilfe schätzen, wenn es darum geht, meine Fehler zu korrigieren und zu informieren, was richtig ist.FIR Filterlänge ist der Schnitt als ein Koeffizient enthalten? - Matlab

Angenommen, ein FIR-Filter mit Koeffizienten-Array A=[1,c2,c3,c4]. Die Anzahl der Elemente ist L so die Länge des Filters L aber die Reihenfolge ist L-1.

Konfusion1: Wird der Schnittpunkt 1 als Koeffizient betrachtet? Ist es immer 1?

Confusion2: Ist mein Verständnis richtig, dass für das gegebene Beispiel die Länge L= 4 und order=3?

Confusion3: Mathematisch, kann ich es schreiben als:

x[n] = \sum_{l=0}^{L-1}A_l u[n-l]

wo u sind die Eingangsdaten und l beginnt, sich von Null. Um die obige Gleichung zu simulieren, habe ich dann die folgende Faltung durchgeführt. Ist es richtig ?:

N =100; %number of data 
A = [1, 0.1, -0.5, 0.62]; 
u = rand(1,N); 
x(1) = 0.0; 
x(2) = 0.0; 
x(3) = 0.0; 
x(4) = 0.0; 
for n = 5:N 
    x(n) = A(1)*u(n) + A(2)*u(n-1)+ A(3)*u(n-3)+ A(4)*u(n-4); 
end 

Antwort

1

Confusion1: ist der Schnittpunkt 1 als Koeffizient berücksichtigt? Ist es immer 1?

Ja, es wird ein Koeffizient betrachtet, und keine ist es nicht immer 1. Es ist sehr häufig ein globalen Skalierungsfaktor in der Koeffizienten-Matrix enthält, indem all Koeffizienten multipliziert wird (dh die Eingabe oder Ausgabe eines Skalierungs Filter mit Koeffizienten [1,c1,c2,c2] von K entspricht der Verwendung eines Filters mit Koeffizienten [K,K*c1,K*c2,K*c3]). Man beachte auch, dass viele FIR-Filterentwurfstechniken Koeffizienten erzeugen, deren Amplitude nahe der Mitte des Koeffizientenarrays liegt und am Anfang und am Ende abfällt.

Confusion2: Ist mein Verständnis richtig, dass für das gegebene Beispiel der Länge L= 4 und Ordnung = 3?

Ja, das ist richtig

Confusion3:[...] Dann die obige Gleichung zu simulieren ich die folgende Faltung getan haben. Ist es richtig?

Fast, aber nicht ganz. Hier sind die paar Dinge, die Sie beheben müssen.

  1. Im Haupt for Schleife, die Formel anwenden Sie den Index von A und verringern den Index der u um 1 für jeden Begriff erhöhen würde, so würden Sie tatsächlich bekommen x(n) = A(1)*u(n) + A(2)*u(n-1)+ A(3)*u(n-2)+ A(4)*u(n-3)
  2. Sie tatsächlich diese Schleife beginnen bei n=4
  3. die ersten Ergebnisse sollten noch die Formel verwenden, aber fallen die u(n-k) Bedingungen für die n-k wäre weniger als 1. Also, für x(3) Sie 1 Begriff fallen würde, für x(2) Sie 2 Begriffe fallen würde und für x(1) würden Sie 3 Begriffe fallen lassen.

Der modifizierte Code würde wie folgt aussehen:

x(1)=A(1)*u(1); 
x(2)=A(1)*u(2) + A(2)*u(1); 
x(3)=A(1)*u(3) + A(2)*u(2) + A(3)*u(1); 
for n = 4:N 
    x(n) = A(1)*u(n) + A(2)*u(n-1)+ A(3)*u(n-2)+ A(4)*u(n-3); 
end 
+0

Dank für Ihre Antwort danken. Es ist sehr hilfreich. Nur um zu bestätigen, ob ich deiner Antwort richtig gefolgt bin, 1) wenn 'h = [1,0,2,0,3]' dann ist die Reihenfolge 2 und die Länge ist 3? (2) Es gibt auch einen anderen Begriff, der als "Verzögerung" bekannt ist AR- und MA-Modelle. Ist Reihenfolge = Verzögerung? –

+0

1) ja. 2) Für MA, "Lag = Order/2" -Proben (aka 'order/(2 * Fs) 'Sekunden, wenn' Fs' die Abtastfrequenz in Hz ist). Für andere (nicht linearphasige MA und AR) ist die Beziehung nicht so trivial. Um den [Linear-phase-Artikel auf Wikipedia] (https://en.wikipedia.org/wiki/Linear_phase) zu zitieren, "Ein Filter mit linearer Phase kann durch ein FIR-Filter erreicht werden, das entweder symmetrisch oder antisymmetrisch ist." – SleuthEye

Verwandte Themen