Forum: Digitale Signalverarbeitung / DSP / Machine Learning Systemidentifikation


von itsme87 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich muss für eine Arbeit eine Systemidentifikation durchführen.
Hierfür habe ich das System mit einem Testsignal beaufschlagt und daraus 
ein Bode-Diagramm erstellt (blau).
Jetzt versuche ich, das Bode-Diagramm durch einfache Übertragungsglieder 
anzunähern um das System zu identifizieren.

Dabei habe ich ein PT2-Glied, ein PT1-Glied und ein Totzeitglied 
verwendet.
Hier die verwendeten Parameter:
1
K=1;                                      %Werte PT2-Glied
2
d=0.3;
3
T=0.42;
4
5
K2=1;                                     %Werte PT1-Glied
6
T2=0.01;
7
g2=tf([0 K2],[T2 1]);
8
 
9
s=tf('s');                                %Totzeitglied
10
Tt=0.1;
11
gt=exp(-s*Tt);

Damit schaffe ich aber nur den Phasengang anzunähern, der Amplitudengang 
passt nicht. Alternativ schaffe ich es andersherum, dass der 
Amplitudengang stimmt, der Phasengang aber nicht mehr.

Hat da jemand eine Idee woran das liegen könnte bzw. was ich verbessern 
könnte.


Außerdem habe ich versucht mit der Methode der kleinsten Fehlerquadrate 
die Koeffizienten der Übertragungsfunktion zu bestimmen.
Ich habe dazu Unterlagen aus einem HOchschulpraktikum verwendet, steige 
aber nicht so ganz durch und deswegen einfach mal abgekupfert.

Hier der Code:
1
Eingangssig = MessGr_Ausgang;
2
Ausgangssig = MessGr;
3
4
m=100;
5
n=m;
6
kmin=100;
7
8
9
PHI = zeros(n,n+m);      %Messwertmatrix
10
for i=1:n
11
    
12
    k=kmin+i;
13
    phi = [flipud(-Ausgangssig(k-n:k-1)); flipud(Eingangssig(k-m:k-1))].';
14
    PHI(i,:) = phi;
15
    
16
end
17
18
PINV_PHI = pinv((PHI));       %Pseudoinverse
19
20
theta = PINV_PHI * Ausgangssig(1:n);      %Vektor mit Parameterwerten
21
22
epsilon = Ausgangssig(1:n) - PHI*theta;    %Schätzfehler
23
24
J = epsilon'*epsilon;         %Gütemaß
25
26
a = theta(1:n);
27
b = theta(n+1:n+m);
28
29
loss = J/(Ausgangssig'*Ausgangssig);
30
31
32
TEST = tf(a', b');
33
bode (TEST)

Vielleicht kann mir da jemand weiterhelfen, wenn ich das Script so 
ausführe fehlt wohl noch etwas, ich weiß aber nicht was.

Die Signale bestehen aus ca. 12000 Werten.

Vielen Dank schonmal

von A. S. (rava)


Lesenswert?

Für den Abfall bei 0.1 Hz benötigt man evtl Übertragungsglieder mit 
anderer Charakteristik als PT1, PT2, Tt.

Spannend wären möglicherweise erstmal folgende Fragen:
- ist das System überhaupt linear?
- ist das Anregungssignal überhaupt brauchbar
- wie ist die stationäre Verstärkung (bevor man sich an die Dynamik 
wagt)
- ist das System in irgendeiner Weise instabil (z.B. was soll das 
hochfrequente "Rauschen" und wo kommt es her)?


hat das System beispielsweise differenzierenden Charakter, heißt das: 
Die Sprungantwort konvergiert gegen 0 und mit PTn kommt man nicht weit 
;)

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.