bodediagramm + impulsantwort

Gast #589724
Lesenswert?

Hallo

Wenn ich ein einfaches lti system habe z.b. pt1. und die impulsantwort
des systems messe sollte ich doch mit anschliessender fft der 
impulsantwort
zum bodediagramm gelangen.

ich versuche nun schon eine weile das mit matlab hinzukriegen. bisher 
jedoch ohne erfolg.
vieleicht kann mir jemand die paar zeilen code zeigen wie das an einem 
einfachen bsp. funktioniert.

was ich bisher versucht habe. aber vermutlich liegt bei mir der fehler 
nach der fft. da habe ich ja ein spiegelbildliches spektrum um fo. wie 
gesag wäre ich froh um einen kleinen tip.
1
sys = tf([1],[1 1]);
2
figure(5)
3
subplot(211)
4
bode(sys)
5
grid
6
title('PT1');
7

8
subplot(212);
9
[y time]=impulse(sys);
10
grid
11
title('impuse')
12

13
figure(6)
14
a=fft(y);                %invers fft
15
inv_spectrum=20*log10(abs(a))
16
semilogx(time,inv_spectrum);
17
grid

gruss
tobias
#589762
Lesenswert?

>> sys = tf([1],[1 1]);
macht Dir nen kontinuierliches System. Für 'impulse' ist die Abtastzeit 
'chosen automatically', was immer das heißen mag. Da vagleichse Birnen 
mit Äpfeln. Für rein abtastende Systeme geht das. Für Vergleich 
kontinuierliche/abtastende Systeme ist das nicht so schlicht.

Cheers
Detlef
Gast #589819
Lesenswert?

noch eine frage

nun plote ich mir das bodediagram auf folgende weise:
1
G=1./(1+ 4*j*w + 5.5*j*w*2);
2
betr=20*log10(abs(G));

nun wollte ich zum test folgendes:

a = ifft(betr,8192);
b = fft(a,8192);

nun sollte ja nach beiden transformationen wieder betr rauskommen.
das funktioniert nun so aber gar nicht. hast du da eine idee?

gruss
Gast #590102
Lesenswert?

Hallo

Nun habe ich ein bisschen geübt und folgenden code:
(vor und wieder rücktransformation funktioniert)
1
clear
2
clc
3

4
N = 8192;
5
t = linspace(0,1,N);
6

7
figure(1)                    %test funktion zu überprüfung des ergebniss
8
subplot(211)
9
sys=tf([1],[1 0.1 4]);
10
impulse(sys)
11
grid
12

13
w = logspace(-3,3,N);        %transfer function
14
G=1./(-w.^2 + 0.1*j*w + 4);
15
betr=20*log10(abs(G));
16

17
figure(2)                    %bode diagramm
18
semilogx(w,betr)
19
title('transferfucntion')
20
grid
21

22
figure(3)                    %inverse fft von bodediagramm
23
subplot(211);
24
inv_g = ifft(betr,N);
25
plot(t,abs(inv_g));          %ausgabe zur kontrolle, das müsste nun die impulsantwort sein
26
axis([0 0.01 0 20])
27
title('ifft -> das müsste jetzt die impulsantwor sein')
28
grid
29

30
subplot(212);
31
f_g = fft(inv_g,N);          %rücktransformation
32
plot(t*10e2,f_g);            %ausgabe zur kontrolle
33
title('fft -> hier wieder das bodediagramm')
34
grid

Figure 1 ist zur Kontrolle und müsste dann auch das Resultat sein.
Figure 2 ist meine übertragungsfunktion.
Gebe ich nun diese Transferfunktion in meine IFFT() müsste ich als 
Resultat ja die Impulsanwort von fig. 1 bekommen. Als Resulat bekomme 
ich in etwa die Hüllkurve des zu erwartenden Resultat. Die Skallierung 
ist auch Mist.

Hat das evtl. etwas mit der Auflösung der IFFT zu tun, oder Fensterung?

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