WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fit routine ueber mehrere Formeln

 

RatioTM
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 24.04.18
Wohnort: Genf
Version: ---
     Beitrag Verfasst am: 26.04.2021, 14:49     Titel: Fit routine ueber mehrere Formeln
  Antworten mit Zitat      
Hallo,

ich moechte eine function schreiben, die folgendes machen soll:

i) kreiere zufaelligen Vektor gemaess einer Lognormalverteilung mit 3 Unbekannten in der Lognormalverteilung (dN; 1x743 vektor). Die Unbekannten werden zufaellig kreiert und sollen in der ersten Iteration gemaess zunaechst festgelegter Startparameter gebildet werden. Anschliessend sollen in x Iterationen die Werte geaendert werden, allerdings nicht bis die Residuen von Punkt i) minimiert sind (dann wuerde ich einfach MATLABs fit verwenden), sondern bis die Residuen von Punkt iii) minimiert sind.

ii) verwende diese Werte (von oben), um ueber ein Integral von log10(x_i) bis log10(x_i+1) den Wert N zu bestimmen.

iii) der Wert N ist eine 1x743 Matrix und wird mit einer hfest vorgeschriebenen 743x25 Matrix (H) multipliziert. Dies ergibt den Wert M, also:

M=N*H (M: 1x25 Matrix)

Dieses M soll mit einem M_measured verglichen werden, wobei die Schritte (i) bis (iii) unter Veraenderung der Unbekannten so oft veraendert werden sollen, bis die Residuen im Vergleich M vs M_measured minimiert sind.

Ich bin mir sicher, dass MATLAB hierzu etwas anbietet, ich dies jedoch nicht kenne. Meine Vorgehensweise war bisher stets auf die Loesung eines Gleichungssystems entweder via lsqlin oder etwa via fit beschraenkt.

Das was ich machen moechte, entspricht im Grunde auch fit, jedoch eben ueber drei zwischenschritte. Die Parameter in i sollen so oft geaendert werden, bis die Residuen der Matrix (dot-) Multiplikation mit der hardgecodeten Matrix im Vergleich zu einem Messwert minimiert sind.

Koennt ihr mir hier weiterhelfen?

Vielen Dank und freundliche Gruesse!

Zuletzt bearbeitet von RatioTM am 26.04.2021, 16:34, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.04.2021, 15:32     Titel:
  Antworten mit Zitat      
Hallo,

für mich ist die Beschreibung recht länglich und in entscheidenden Punkten doch zu vage.

Zitat:
gemaess einer Startbedingung

Welche Startbedingung?

Zitat:
ein Integral ueber die x Achse

Wie soll man über eine Achse integrieren? Ich kenne nur Integrale über Funktionen. Die entscheidende Frage wäre dann: welche Funktion?

Insgesamt klingt das für mich nach lsqnonlin .
Ich würde empfehlen, mal damit anzufangen und dann bei konkreten Fragen auf das Forum zurückzukommen.

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
 
RatioTM
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 24.04.18
Wohnort: Genf
Version: ---
     Beitrag Verfasst am: 26.04.2021, 15:55     Titel:
  Antworten mit Zitat      
Hallo,

Harald hat Folgendes geschrieben:


Zitat:
gemaess einer Startbedingung

Welche Startbedingung?



Wenn die Lognormalverteilung gegeben ist ueber:

Code:
'dN= (N1./((2.*pi).^(1./2).*log(s1))).*exp(-((log(x)-log(m1)).^2)./(2*log(s1).^2))'


Sind die Startbedingungen der Verteilung in N1, s1 und m1 fesgelegt. Diese Startbedingungen basieren beispielsweise auf einem anderen Vektor und werden durch einen Fit, etwa in einer anderen Routine, bestimmt.
dN ist eine Lognormalverteilung und soll ueber x (ein hard gecodeter Vektor) die Groesse 1x743 erhalten.
Harald hat Folgendes geschrieben:

Zitat:
ein Integral ueber die x Achse

Wie soll man über eine Achse integrieren? Ich kenne nur Integrale über Funktionen. Die entscheidende Frage wäre dann: welche Funktion?

Insgesamt klingt das für mich nach lsqnonlin .
Ich würde empfehlen, mal damit anzufangen und dann bei konkreten Fragen auf das Forum zurückzukommen.


Die Antwort ist oben bereits beschrieben: Der Vektor x legt die x-Werte der funktion dN fest. Die Integrale erfolgen schrittweise (Bin by Bin) entlag des Vektors x. EIne grobe Annaeherung waere etwa:
Code:

x_integr_range=x(1):x(2);
N_to_integr=data(1,2:end);
data_integr_range=N_to_integr(1,x_range);
F = griddedInterpolant(log10((x_integr_range)),data_integr_range);
fun= @(t) F(t);
N_int{i,j}=[N_int; integral(fun,log10(x_integr_range(1)), log10(x_integr_range(end)))];
 


Danach ist M gegeben durch:

Code:


Wobei M eine 1x25 Matrix ist und H eine fest vorgegebene 743x25 Matrix.

Wie Sie sehen will ich die Parameter N1, s1 und m1 in k Iterationen veraendern bis die Residuen von M vs M_measured minimiert sind, wobei M_measured die reellen Werte sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.04.2021, 16:04     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Sind die Startbedingungen der Verteilung in N1, s1 und m1 fesgelegt.

"Startbedingungen" habe ich in dem Zusammenhang noch nie gehört, ich würde von "Parametern" sprechen.

Zitat:
Die Antwort ist oben bereits beschrieben

Nur in für mich sehr unüblichen Worten. Über Werte oder auch einen Vektor zu integrieren ist üblich, von "über eine Achse integrieren" habe ich noch nie gehört.

Wenn du also die x-Werte integrieren willst, würde ich trapz verwenden.

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
 
RatioTM
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 24.04.18
Wohnort: Genf
Version: ---
     Beitrag Verfasst am: 26.04.2021, 16:15     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
Sind die Startbedingungen der Verteilung in N1, s1 und m1 fesgelegt.

"Startbedingungen" habe ich in dem Zusammenhang noch nie gehört, ich würde von "Parametern" sprechen.

Zitat:
Die Antwort ist oben bereits beschrieben

Nur in für mich sehr unüblichen Worten. Über Werte oder auch einen Vektor zu integrieren ist üblich, von "über eine Achse integrieren" habe ich noch nie gehört.

Wenn du also die x-Werte integrieren willst, würde ich trapz verwenden.


Hallo,

Womoeglich ist meine Wortwahl nicht die Einfachste. Aber ich habe den Eindruck, dass Sie verstanden haben, worauf ich hinaus will:
"ueber eine Achse integrieren" is natuerlich mathematisch vollkommener Schwachsinn, jedoch wandere ich bin-by-bin die Achse ab und integriere die Werte jeweils von x_i bis x_i+1. Ich gebe Ihnen jedoch Recht, dass es vermutlich einfacher in der Beschreibung der Problemstellung geht.

Mit "Startbedingung" wollte ich letztlich zum Ausdruck bringen, dass diese drei Parameter iterativ veraendert werden sollen bis die Residuen in M vs M_measured minimiert sind.

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

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.04.2021, 16:27     Titel:
  Antworten mit Zitat      
Hallo,

Entschuldigung, wenn ich so deutlich werde:
Zitat:
Womoeglich ist meine Wortwahl nicht die Einfachste.

Nicht nur das, sondern meines Erachtens nicht korrekt.

Sind denn nun noch Fragen offen? Wenn ja, welche?

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
 
RatioTM
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 24.04.18
Wohnort: Genf
Version: ---
     Beitrag Verfasst am: 26.04.2021, 16:36     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Entschuldigung, wenn ich so deutlich werde:
Zitat:
Womoeglich ist meine Wortwahl nicht die Einfachste.

Nicht nur das, sondern meines Erachtens nicht korrekt.

Sind denn nun noch Fragen offen? Wenn ja, welche?

Grüße,
Harald


Hallo,

ich stimme Ihnen zu und habe den Text angepasst- auch fuer zukuenftige Leser. Ich werde zunaechst mit lsqnonlin beginnen und mich bei Fragen nochmal melden.

Beste Gruesse
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.