www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP bodediagramm + impulsantwort


Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
sys = tf([1],[1 1]);
figure(5)
subplot(211)
bode(sys)
grid
title('PT1');

subplot(212);
[y time]=impulse(sys);
grid
title('impuse')

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

gruss
tobias

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ok, dann werde ich ein bodediagramm auf herkömmliche weise zeichnen und 
es nochmals versuchen. gebe die ergebnisse bekannt.

gruss
tobias

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch eine frage

nun plote ich mir das bodediagram auf folgende weise:
G=1./(1+ 4*j*w + 5.5*j*w*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

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir kommt dasgleiche raus:
betr=rand(1,109);
a=ifft(betr,8192);
b=fft(a,8192);
sum(abs(b(1:109)-betr))

btw: 5.5*j*w*2) soll 5.5*j*w.^2) heißen?

Cheers
Detlef


Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

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

N = 8192;
t = linspace(0,1,N);

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

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

figure(2)                    %bode diagramm
semilogx(w,betr)
title('transferfucntion')
grid

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

subplot(212);
f_g = fft(inv_g,N);          %rücktransformation
plot(t*10e2,f_g);            %ausgabe zur kontrolle
title('fft -> hier wieder das bodediagramm')
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.