Forum: Digitale Signalverarbeitung / DSP / Machine Learning 1/s vs. bilineare Transformation


von Peter M. (Gast)


Lesenswert?

Hi,

In einem sehr einfachen (analogem!) Simulink Modell erstelle ich ein 
Signal mit 5 Sinusen (Frequenzen 34, 334, 106, 149, 448) gefolgt von 
einem Integrator. Die Simulation dauert eine 1-1/1000 Sekunden und 
"simout" wird mit 1/1000 sub-gesampled.

Das gleiche Signal erstelle ich in einem 1000-Elemente Vektor und 
filtere das Signal mit einem Integrator per bilinearer Transformation:

[numd, dend] = bilinear([1], [1 0], 1000);
x2 = filter(numd, dend, x);

Zeige ist mir nun das Spektrum beider Signale per fft, so ist dieses 
nicht ident:

stem(abs([fft(simout.signals.values) , fft(x_I)]))
http://snag.gy/8srWk.jpg

Hat jemand eine Idee wo der Fehler liegen koennte?
Danke,
Peter

von Kai S. (kai1986)


Lesenswert?

Hallo,

wenn ich mich recht erinnere, dann kann man bei Simulink eine ganze 
Menge Parameter für die Simulation einstellen, unter anderem auch die 
Schrittweite und den Algorithmus. Das ganze hat teils schon ziemliche 
Auswirkungen auf die Genauigkeit der Algorithmen.
Zudem ist die Grafik deiner FFT vermutlich ein Powerspektrum, sprich, es 
wurden alle Werte quadriert. Damit sehen gleiche Unterschiede bei 
verschiedenen Absolutwerten unterschiedlich aus.

Gruß Kai

von Frank M. (aktenasche)


Lesenswert?

analog ist simulink auch nicht, wie mein vorposter schon angedeutet hat.
1/1000s heisst 1ms und "frequenz 34" ist zu ungenau ;)

verdächtig ist eigentlich nur, dass "frequenz 34" komplett fehlt.

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.