Hallo zusammen, ich versuche seit gestern das Verhalten eines CIC-Filters im Zeit und Frequenzbreich mit Matlabzu untersuchen.daher wollte ich die Impulsantwort und seine Reaktion auf eine beliebige Signalfolge im Zeitbereich simulieren. hier ist seine Übertragungsfunktion: h(z)=[(1-z^(-R*M))/(1-z^-1)]^N R=10,M=1, N=8 als Beispiel mein problem ist die Argumente für die funktion tf() zu bestimmen, weis Jemand, wie man die Koeffizienten von der Zähler und Nennerploynom bestimmen kann. ich bin für jede Hilfe sehr dankbar Gruß Lab
Kenne mich in Matlab nicht sonderlich aus. Könnte dass so passen?
1 | %CIC-Filter |
2 | |
3 | clear all; |
4 | close all; |
5 | |
6 | R=10; |
7 | M=1; |
8 | N=8; |
9 | |
10 | %sys = tf(num,den,Ts) |
11 | z=tf('z'); %Sampletime noch angeben? |
12 | |
13 | h= (1-z^(-R*M))/(1-z^(-1))^N; |
14 | |
15 | num= h.num{1}; |
16 | denum= h.den{1}; |
17 | |
18 | fvtool(num,denum); |
Wenn das so passt könnte man noch kurz ne Funktion oder so stricken. Grüße
Gerade ausprobiert mit nem kleinen FIR-Filter. Händisch berechnete & gezeichnete Impulsantwort stimmt mit der von MATLAB überein. G(z) = z * z/(z-1)^2 - 2z/(z-1)^2 * z^-4 + z/(z-1)^2 * z^-9 Gerade m. Gerade m. Gerade m. Steigung 1 Steigung -2 Steigung 1 Jeweils bei z z^-4 z^-9 Also ein Dreieck: + | | | | 5| /´ \ | ,´ `\ | ,´ `. 1| / `. | +------------------+ 0 4 8 Grüße
Hallo NopNop, danke sehr Ihre Hilfe; ich habe es probiert und es klappt bei mir immer noch nicht ;ich habe so Ihr code probiert
1 | R=10; |
2 | M=1; |
3 | N=8; |
4 | Ts=0:001:1; |
5 | sys = tf(num,den,Ts); |
6 | |
7 | h= (1-z^(-R*M))/(1-z^(-1))^N; |
8 | num= h.num{1} |
9 | denum= h.den{1}; |
10 | fvtool(num,denum); |
bokomme folgende fehler
1 | error: `num' undefined near line 5 column 10 |
2 | error: evaluating argument list element number 1 |
3 | >>>error: evaluating argument list element number 1 |
4 | error: called from: |
konnten Sie mir bitte Ihr code bisschen erklären danke im voraus PS sorry ich arbeite nicht mit matlab sondern Octave aber bis zu fvtool sollte es eigentlich gehen
gerbej lab schrieb: > sorry ich arbeite nicht mit matlab sondern Octave Dann sollte man in seiner Frage auch nicht schreiben dass man Matlab verwendet ;-) Bei der Umsetzung in Octave kann ich Dir nicht helfen. Sollte aber gleich bzw. ähnlich gehen. gerbej lab schrieb: > ich habe es probiert und es klappt bei mir > immer noch nicht ;ich habe so Ihr code probiert Das wundert mich nicht. So wie Du das geschrieben hast KANN es garnicht funktionieren. Wo definierst Du denn "num" und "den" ?
1 | R=10; |
2 | M=1; |
3 | N=8; |
4 | Ts=0:001:1; |
5 | sys = tf(num,den,Ts); % <== Fehler, da num&den nicht definiert |
6 | |
7 | h= (1-z^(-R*M))/(1-z^(-1))^N; |
8 | num= h.num{1} % <== Erst hier wird num definiert |
9 | denum= h.den{1}; % <== den gibt es garnicht, sondern nur "denum" |
10 | fvtool(num,denum); |
gerbej lab schrieb: > konnten Sie mir bitte Ihr code bisschen erklären
1 | %CIC-Filter |
2 | clear all; %Alle Variablen löschen |
3 | close all; %Alle Fenster schließen |
4 | |
5 | %=================================== |
6 | % Parameter |
7 | %=================================== |
8 | R=10; |
9 | M=1; |
10 | N=8; |
11 | |
12 | %z = tf('z',Ts) to specify a TF model with sample time Ts using a rational |
13 | %function in the discrete-time variable, z. Set Ts = -1 or Ts = [] to |
14 | %leave the sample time unspecified. |
15 | |
16 | z=tf('z', -1); |
17 | |
18 | %Erzeugen der Impulsantwort |
19 | h= (1-z^(-R*M))/(1-z^(-1))^N; |
20 | |
21 | %Extrahieren der Koeffizienten aus der Transferfunktion h |
22 | nume= h.num{1}; |
23 | denum= h.den{1}; |
24 | |
25 | %Aufruf des "Filter Visualization Tool" um Amplitudengang, Phase, |
26 | %Pol-Nullstellendiagramm anzuzeigen |
27 | fvtool(nume,denum); |
Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.