Forum: Digitale Signalverarbeitung / DSP / Machine Learning HIlfe bei Übertragungsfunktion von CIC-FIlter


von gerbej l. (lab)


Lesenswert?

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

von NopNop (Gast)


Angehängte Dateien:

Lesenswert?

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

von NopNop (Gast)


Angehängte Dateien:

Lesenswert?

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

von gerbej l. (lab)


Lesenswert?

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

von NopNop (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.