fircls < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:43 Mo 21.01.2008 | Autor: | Bastiane |
Hallo zusammen!
Folgendes habe ich in Matlab eingegeben:
n=51;
f=[0 0.4 0.8 1];
a=[0 1 0];
up=[0.02 1.02 0.01];
lo=[-0.02 0.98 -0.01];
b=fircls(n,f,a,up,lo);
So ganz verstehe ich aber noch nicht, was da passiert. Das Ganze soll wohl ein lineares FIR-Filter darstellen/erzeugen(?) Aus der Übung hatte ich mir notiert, dass das n die Anzahl der Koeffizienten und das f die Frequenzbereiche angibt. Mithilfe der Matlab-Hilfe habe ich das jetzt so verstanden, dass - in meinem Fall dann - das Filter in den Bereichen [0, 0.4] und [0.8, 1] den Wert 0 annehmen soll und im Bereich [0.4, 0.8] den Wert 1. Ist das richtig so?
Und up und lo geben den maximal erlaubten Wert für das Filter an?
Dann kann man sich noch "Text" ausgeben lassen, da erhalte ich:
Bound Violation = 0.0817948508909
Bound Violation = 0.0106165694842
Bound Violation = 0.0002046575544
Bound Violation = 0.0000031935333
Bound Violation = 0.0000003248926
Bound Violation = 0.0000000251642
Bound Violation = 0.0000000075978
Was hat das zu bedeuten?
und wenn ich es zeichnen lasse, bekomme ich:
[Dateianhang nicht öffentlich]
Das Ganze soll wohl ein Bandpassfilter sein. Das oberste Bildchen sieht ja auch so aus. Und die drei Bilder darunter? Sind das nur "Vergrößerungen" des obersten Bildes, also für alle drei Bänder?
Aber was genau macht diese fircls Funktion denn jetzt? Ist mein b jetzt ein FIR-Filter, so dass ich, wenn ich irgendein Signal filtern möchte, es einfach nur mit b falten muss?
Ach ja, und dann war noch die Frage, wie die Frequenzantwort des Filters aussieht. Muss ich da einfach nur die Fouriertransformierte von b berechnen? Wenn ja, wie? Wenn ich fourier(b) eingebe, bekomme ich "??? No appropriate methods for function fourier."
Viele Grüße
Bastiane
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:28 So 27.01.2008 | Autor: | BKM |
Hallo Bastiane.
Hier ein paar Antworten, die Du aber bereits schon , größtenteils, selber richtig erkannt hast.
b = fircls(n,f,amp,up,lo) generates a length n+1 linear phase FIR filter b. The frequency-magnitude characteristics of this filter match those given by vectors f and amp:
n=51; Ordnung des Filters
f=[0 0.4 0.8 1]; Normierte Frequenzen. Muessen bei 0 beginnen und mit 1 enden
a=[0 1 0]; Zu jeder Frequenz gibt es den Amplituden_Vektor
up=[0.02 1.02 0.01];
b = fircls(n,f,amp,up,lo) generates a length n+1 linear phase FIR filter b.The frequency-magnitude haracteristics of this filter match those given by vectors f and amp:f is a vector of transition frequencies in the range from 0 to 1, where 1 corresponds to the Nyquist frequency. The first point of f must be 0 and the last point 1. The frequency points must be in increasing order.amp is a vector describing the piecewise constant desired amplitude of the frequency response. The length of amp is equal to the number of bands in the response and should be equal to length(f)-1.up and lo are vectors with the same length as amp. They define the upper and lower bounds for the frequency response in each band.
lo=[-0.02 0.98 -0.01];
b=fircls(n,f,a,up,lo);
Wie Du auch hier richtig vermutest, sind die unteren Bilder Vergrößerungen des ersten Bildes. Alle drei zeigen auch ein entsprechende Welligkeit ( Gibbs’sche Phänomen). Die Frequenzantwort ergibt sich aus der Darstellung selber.
Ich hoffe ein wenig weiter geholfen zu haben.
Beste Grüße.
|
|
|
|