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

Fehlersummenquadrate minimieren

 

thomas0815
Forum-Century

Forum-Century


Beiträge: 153
Anmeldedatum: 13.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2010, 09:36     Titel: Fehlersummenquadrate minimieren
  Antworten mit Zitat      
Hallo, ich versuche mit Matlab eine multivariate Regression durchzuführen. Der Ansatz ist die Fehlersummenquadrate zu minimieren. Ich verfüge über keine Toolboxen.

Ich habe eine Datenreihe für X und Y gegeben.

YY=a1+a2*X1+a3*X1²+a4*X1³ +b1+X2+b2+x2²

Nun soll die quadratische Abweichung zwischen Y und YY durch geeignete wahl der Parameter (a1...a4, b1...b2) minimiert werden

C=min(sum((Y-YY)^2)

die Parameter können als einzelne Variable ausgegeben werden also Wert für a1, a2, a3 udn a4 oder als ein Zeilenvektor a mit 4 Elementen - selbes gilt analog für b.

Die Parameter sollen dann direkt für die X1 und x2 Werte in die Funktion eingesetzt werden und somit C berechnet werden.

Harald hatte mir vor einiger Zeit einen Hinweis gegeben. Mein erster Asnatz ist so

Code:
function y=modell(a,b,x1,x2)

y = a(1) + a(2)*x1 + a(3)*x1^2 + a(4)* x1^3+b(1)*x2+b(2)*x2^2;
params = nlinfit(x1data, x2data, ydata, @modell, x10, x20)


Dabei kommt folgende Fehlermeldung:

??? Input argument "a" is undefined.

Error in ==> Untitled at 3
y = a(1) + a(2)*x1 + a(3)*x1^2 + a(4)* x1^3+b(1)*x2+b(2)*x2^2;

hat jemand einen Hinweis?

Danke und Gruß,
Thomas
Private Nachricht senden Benutzer-Profile anzeigen


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 11.08.2010, 10:24     Titel:
  Antworten mit Zitat      
Hi,

lass den Parameter a1 in der Gleichung weg.
Letzten Endes optimierst Du die Summe a1 + b1.

Deine Gleichung darf nur eine Konstante und nicht mehrere enthalten.

Grüße
Andreas
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
thomas0815
Themenstarter

Forum-Century

Forum-Century


Beiträge: 153
Anmeldedatum: 13.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2010, 14:51     Titel:
  Antworten mit Zitat      
ja, die Gleichung habe ich falsch geschrieben; die muss heißen


YY=a1+a2*X1+a3*X1²+a4*X1³ +b1*X2+b2*x2²

Damit habe ich nur eine Konstante a1 - im code hatte ich es aber richtig, am Fehler ändert sich trotzdem nichts !?

Woran kann das liegen?

Viele Grüße,
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2010, 07:03     Titel:
  Antworten mit Zitat      
Da alle Parameter linear eingehen handelt es sich um ein lineares Optimierungsproblem. Du kannst also backslash verwenden:

Code:

A = [ones(size(X1) X1 X1.^2 X1.^3 X2 X2.^2];
params = y\A;
 


Außerdem ist der Aufruf von nlinfit falsch. Nur das erste Argument ist für den Datenvektor bestimmt. Die Übergabe der Parameter und Werte geht so bestimmt auch nicht.
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 - 2025 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.