Forum: Digitale Signalverarbeitung / DSP / Machine Learning Kontinuierliches Signal in Matlab filtern


von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Hallo,


ich will ein Signal in Matlab zeit-kontinuierlich filtern. Den Filter 
habe ich als Übertragungsfunktion in s vorliegen. Für diskrete Systeme 
gibt es die Funktion "filter", so etwas brauche ich für kontinuierliche 
Systeme.

Eine Überführung des Filters von s nach z ist bei der dann notwendigen 
Samplingfrequenz nicht möglich.

Tom

von Detlef _. (detlef_a)


Lesenswert?

Was soll denn dabei rauskommen? Matlab (und Spice) Ergebnisse sind immer 
zeitdiskret.

Cheers
Detlef

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Detlef _a wrote:
> Was soll denn dabei rauskommen?
Ein gefiltertes Signal. Sorry, ich verstehe die Frage nicht.

> Matlab (und Spice) Ergebnisse sind immer zeitdiskret.
Alles was ein digitaler Computer ausrechnet ist zeitdiskret, nur nicht 
immer äquidistant. Das ist bei mir jedoch auch der Fall. Nur kann ich 
die bilineare Transformation (von s nach z) für den Filter nicht bei der 
notwendigen Samplingfrequenz nicht anwenden.



Tom

von Alex (Gast)


Lesenswert?

Kann man davon ausgehen, dass dein Signal auch nicht diskret ist, also 
in Form einer Gleichung vorliegt (keine Samplereihe)?

Wenn du das Problem "kontinuierlich" lösen möchtest musst du:

f(t) => f(s)
Dein Signal Laplace-transformieren.

Dann:
f'(s) = G(s) * f(s)

Dann den Kram wieder rückwärts:
f'(s) => f'(t)

Ist ist das, was du machen möchtest?

von Max (Gast)


Lesenswert?

Guckst du in der Simulink Library nach "Transfer" Function.

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Alex wrote:
> Kann man davon ausgehen, dass dein Signal auch nicht diskret ist, also
> in Form einer Gleichung vorliegt (keine Samplereihe)?
>
> Wenn du das Problem "kontinuierlich" lösen möchtest musst du:
>
> f(t) => f(s)
> Dein Signal Laplace-transformieren.
>
> Dann:
> f'(s) = G(s) * f(s)
>
> Dann den Kram wieder rückwärts:
> f'(s) => f'(t)
>
> Ist ist das, was du machen möchtest?

Prinzipiell ja.

In Simulink kann man eine Übertragungsfunktion in s auch auf ein 
"kontinuierliches" Signal anwenden, daraus schließe ich, dass es in 
Matlab ähnlich gehen muss.

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Max wrote:
> Guckst du in der Simulink Library nach "Transfer" Function.

Ich will es aber nicht in Simulink machen.

von Alex (Gast)


Lesenswert?

Sorry Thomas,

auch Simulink rechnet nur wertdiskret, d.h. die Differentiale in deinem 
G(s) werden diskretisiert. Nicht umsonst ist für jedes Modell in 
Simulink eine Cycle-Time sowie ein Solver vorzugeben.

Wenn du in Simulink einen Sinusblock verwendest dann liefert dieser KEIN 
zeitkontinuierliches Signal sondern auch nur eine Treppenfunktion, 
welche abhängig von der Abtastrate einen realen Sinus mehr oder minder 
gut annähert.

Schau dir mal folgende zwei Matlab Befehle näher an:
tf
lsim

Damit solltest du denke ich weiterkommen.


Gruß,
Alex

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.