HIlfe bei Übertragungsfunktion von CIC-FIlter

OP #2193947
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
Gast #2193996
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
Angehängte Dateien:
Gast #2194041
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
Angehängte Dateien:
OP #2194318
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
Gast #2195287
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren