Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Digitale Signalverarbeitung mit MATLAB-Praktikum

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

System Identification Exponential Funktion

 

jfitzgen
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2020, 22:23     Titel: System Identification Exponential Funktion
  Antworten mit Zitat      
Werte Matlab-User,

ich möchte die Zeitdaten eines exponentiellen Wachstums

N(t) = N_0 * exp(ln(R)*t),
N= Population
N_0= Initiale Population t=0
R=Reproduktionszahl (R<1: abklingen, R>1:Anstieg)

nutzen, um ein parametrisches Modell im Bildbereich

f(s)= 1/(s+a) , (a=-ln(R))

zu identifizieren. (Das Modell soll später eine Überlagerung mit mehreren Exponential-Modellen mit unterschiedlichem zeitlichen Verzug sein, deshalb kein fit oder sonstige einfache Funktion).

Geht das mit der Funktion 'tfest'?

Code:

d=15; %duration
ds=1; %sampling rate
t=0:ds:d; %time
R_0=1; %initial population at t=0
R=1.3; %Reproduction Rate - every day e.g. +30%

% Calculate System Response
N=R_0*R.^(t); %Directly calculate System Response via equation
f_init_laplace=tf(1,[1 -log(R)]); %setup transfer function in laplace domain for exponential growth with Rate R
f_init_ss=ss(f_init_laplace);
N_sim_con_ss=lsim(f_init_ss,zeros(d+1,1),t,R_0,'foh');

% Identification of transfer function
f_est2 = tfest([zeros(d+1,1),N'],1,0);

 


Problem: es gibt keinen Input.

Autsch. Ich fühl mich sooo doof....
Alles Regelungstechnische weg....

Jan
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 22.724
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2020, 09:12     Titel:
  Antworten mit Zitat      
Hallo,

mit Signalverarbeitung und Regelungstechnik kenne ich mich leider recht wenig aus.

Zitat:
Das Modell soll später eine Überlagerung mit mehreren Exponential-Modellen mit unterschiedlichem zeitlichen Verzug sein

Das spricht meines Erachtens nicht dagegen, das als Kurvenanpassung oder allgemeiner Least Squares - Problem aufzufassen.

Hier wäre eine Lösung:
Code:
lsqcurvefit(@(a, x) a(1)*a(2).^x, [0.5, 1], t, N)


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jfitzgen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2020, 09:13     Titel:
  Antworten mit Zitat      
Update:

Es funktioniert mit 'ssest' , es werden nur A und C geschätzt.
Habt ihr weitere Ideen?
Insb. für den nächsten Schritt, einer Überlagerung und ggf. zeitlichen Verzug.

Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jfitzgen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2020, 09:56     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für den Tipp!
Funktioniert prima, auch bzgl. des R_0, der "Ausgangsgröße".

Ich versuche nun mal die Erweiterung um mehrere ExponentialFnkt sowie zeitlichem Verzug und melde mich zurück, wenns wieder zu sehr weh tut Wink.

Für weitere Tipps bin ich trotzdem dankbar!

Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 22.724
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2020, 09:58     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nicht, ob du auf meinen Beitrag geantwortet hast oder zufällig eine Minute später geschrieben hast.

Ist Überlagerung im Zeitbereich im Sinne einer Summe? Dann hätte man z.B. sowas als Modell:
Code:
@(a, x) a(1)*a(2).^x + a(3)*a(4).^(x-a(5))

Dabei ist a(5) die Verzögerung.

Grüße,
Harald

Edit: Das hatte ich geschrieben, während du geschrieben hast. Wir haben ein interessantes Timing ;)
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.