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

Regressionsanalyse mit Nebenbedingungen

 

King Nothing
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 20.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2011, 17:19     Titel: Regressionsanalyse mit Nebenbedingungen
  Antworten mit Zitat      
Hi Leute,

ich möchte für die Modellbildung eines logarithmischen Potentiometers dessen Kennlinie Approximieren.

Bisher habe ich das mit folgendem Skript probiert:

Code:

%   Normierte Achsen aus Kennliniendiagramm
phi = [0:0.05:0.9]*10/9;
V   = [0 0.4 1 2.6 4 6 9 11 13.5 15.8 18.4 22.1 28.6 40 53 65.6 77.7 90 100]/100;

%   Log-Funktion mit 3 Parametern
%fkt = @(k,x) k(1)*exp((k(2)*x).^k(3));

%   Erhöhung der maximalen Iterationsschritte
options = statset('MaxIter',10000);

%   Regressionsfunktion
k = nlinfit(phi, V, fkt, [1 1 1], options)
 


Allerdings hat die approximierte Funktion an der Stelle phi=1 den Wert 1.0443. Da die der Faktor V normiert ist, muss er jedoch an dieser Stelle unbedingt den Wert 1.000 besitzen.
Ich kann die Funktion durch den Faktor 1.0443 teilen, jedoch wird hierdurch natürlich die Abweichung der Funktion vom gewünschten Kennlinienverlauf größer.
Gibt es auch eine Möglichkeit, eine Regression unter der Nebenbedingung (phi = 1, V = 1) durchzuführen?


Ich habe mal den graphischen Verlauf beider Funktionen mit angehängt (rot = Kennlinine, blau = Funktion).

Regression.png
 Beschreibung:

Download
 Dateiname:  Regression.png
 Dateigröße:  5.75 KB
 Heruntergeladen:  725 mal
Private Nachricht senden Benutzer-Profile anzeigen


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2011, 06:41     Titel:
  Antworten mit Zitat      
durch die Nebenbedingung

f(1) = k_1 e^{k_2^{k_3}} = 1

kannst du einen Parameter eliminieren.

 f = e^{k_2(x-1)^{k_3}}

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
King Nothing
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 20.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2011, 23:55     Titel:
  Antworten mit Zitat      
Erstmal vielen Danke für deine Hilfe, jedoch bekomme ich mehrere Fehlermeldungen der Art:
"Warning: Rank deficient, rank = 1, tol = 7.6736e-16"

Wenn ich die berechneten Koeffizienten dann in die Funktion einsetze, enthält der berechnete Vektor V bis auf den ersten Wert nur Nullen.

Weiß wirklich niemand, wie man einer Regression Nebenbedingungen hinzufügen kann? Das muss doch irgendwie gehen...
Am besten sogar 2, dann kann ich den Graphen auch durch den Ursprung gehen lassen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2011, 07:15     Titel:
  Antworten mit Zitat      
Du musst dann natürlich auch eine 1 aus dem Startvektor entfernen. Du hast ja nur noch zwei Parameter die du fitten möchtest.

Die Funktion geht nicht durch den Ursprung egal wie du die Parameter wählst da exp(x) > 0.
Private Nachricht senden Benutzer-Profile anzeigen
 
King Nothing
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 20.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2011, 14:58     Titel:
  Antworten mit Zitat      
Klar, die Startbedingungen hab ich natürlich angepasst.

Durch hinzufügen eines Offsets zur Funktion kann ich die Funktion durch den Ursprung gehen lassen. Da ich im Voraus nicht weiß wie groß der Offset sein muss, benötige ich hier wieder eine NB.

Ich habe gestern auch versucht, mit dem graphischen Fit-Werkzeug zu arbeiten, leider konnte ich hier auch nirgends Nebenbedingungen einfügen. Sad
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.