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

Bestimmung einer Funktion mit drei unabhängigen Variablen

 

blutiger Anfänger in Mat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 08:46     Titel: Bestimmung einer Funktion mit drei unabhängigen Variablen
  Antworten mit Zitat      
Hallo in die Runde,

an meiner Hochschule haben wir MatLab und ich kenne mich nicht sehr gut mit dem Programm aus. Bis jetzt konnte ich Funktionen mit einer oder zwei Variablen über den Befehl cftool oder sftool bestimmen. Aber jetzt habe ich drei Variable und komme überhaupt nicht weiter. Ich habe bereits gesehen, dass andere Teilnehmer vor mir auch schon das Problem hatten und auch, dass diesen geholfen werden konnte. Allerdings waren das dann Befehle und Codes von denen ich noch nichts gehört habe.
Deshalb meine Frage und auch Bitte, ob mir jemand das Vorgehen ausführlich erklären kann?!

Vielen Dank!!!!
Roland


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.10.2015, 09:29     Titel:
  Antworten mit Zitat      
Zitat:
Allerdings waren das dann Befehle und Codes von denen ich noch nichts gehört habe.
zu welchen dieser befehle hast du denn eine frage? was hat nicht geklappt? wenn du schon sachen gelesen hast wäre es ja hilfreich auch die links mit anzugebene das wir dir das selbe nicht noch einmal sagen Smile
nachtrag:
guck dir mal das an:http://de.mathworks.com/help/matlab.....ing-via-optimization.html
bei dem beispiel wird ein curve fit mit fminsearch gemacht. indem versucht wird die quadratische abweichung zu minimieren. du kannst dir mal überlegen wie du das beispiel auf 2dimensionen erweiterst der schritt zu 3 dimensionen ist dann der gleiche.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
blutiger Anfänger in Mat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 09:42     Titel:
  Antworten mit Zitat      
Guten Morgen Winkow,

ich habe folgende Beiträge gelesen:

http://www.gomatlab.de/fitting-funk.....gen-variablen-t28244.html

http://www.gomatlab.de/lsqcurvefit-mir-drei-variablen-t34067.html

http://www.gomatlab.de/messwerte-an.....h-lsqcurvefit-t22704.html

Mit diesen Erklärungen kann ich leider nicht arbeiten, weil ich z.B. gar nicht weiß, wie ich Sonya´s 1. Kommentar lesen kann. Wie gesagt, bin ich leider ein richtiger Anfänger in MatLab.

Versucht habe ich deshalb auch noch nichts, weil mir die Ansätze fehlen.
 
blutiger Anfänger in Mat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 10:02     Titel:
  Antworten mit Zitat      
Hi Winkow,

ich habe mir deinen Link angeschaut und bin schon total überfordert, weil ich nicht weiß, welche Teile des vorgegebenen Befehls ich ersetzen soll und auch nicht mit was.
Ich kenne mich mit der Schreibweise der Befehle nicht gut aus.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.10.2015, 10:58     Titel:
  Antworten mit Zitat      
Zitat:
Ich kenne mich mit der Schreibweise der Befehle nicht gut aus.

na dann ist das doch die ideale möglichkeit sich da mal reinzuarbeiten. ich würde das getting startet empfehlen. das ist für alle matlab anfänger wichtig. die dokumentation von matlab ist sehr gut und man kann sich das sehr gut alles selber bei bringen.
ändern musst du das hier:
Code:
start_point = rand(1, 2);
je nachdem wie viele parameter dein modell beinhaltet. im beispiel sind es 2 darum werden 2 zufällige startpunkte gewählt (A und lamda);
und dann müssen noch diese zeilen angepasst werden:
Code:
     A = params(1);
        lambda = params(2);
        FittedCurve = A .* exp(-lambda * xdata);

die ersten zwei zeilen dienen der übersichtlich keit. da müssen deine parameter hin je nachdem wie viele du hast.
und in der dritten zeile muss halt die funktion hin die du dir überlegt hast.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
blutiger Anfänger in Mat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 15:16     Titel:
  Antworten mit Zitat      
Hallo Winkow,

ich habe einen Code für 2 unabhängige Variablen geschrieben/geschickt bekommen. Ich habe dies geprüft und es funktioniert.

Code:

function [] = mit_2_Variablen()
clear all;
clc;

x_orig1 = [500 1000 1500]
x_orig2 = [-10 0 20]
y_orig  = [123.5 250 378]

%Startwerte für das Lambda
start=[1 0];
options=optimset('TolX', 1e-12);  %Abbruchkriterien einstellen
%Toleranz X - Tdx: 1e-12  %praktisch nie erreichbar -> kein Abbruch
%durch dieses Kriterium
estimated_lambda = fminsearch(@(lambda)fitten(lambda, x_orig1,x_orig2, y_orig),start,options)

%tf bilden und anzeigen in figure(2)
y_estimated= estimated_lambda(2)*x_orig1+estimated_lambda(2)*x_orig2

title(['a=' num2str(estimated_lambda(1)) ' b=' num2str(estimated_lambda(2))])
ylabel('y')
xlabel('x')
zlabel('z')

    function [ err ] = fitten( lambda, x_orig1,x_orig2, y_orig)
        %  FITTEN Summary of this function goes here
        % ==========================================================================
        a=lambda(1);
        b=lambda(2);
        y=a.*x_orig1+b.*x_orig2;

        err=norm(y-y_orig);
        figure(1);
        plot3(x_orig1,x_orig2, y_orig,'-rs');
        hold on;
        plot3(x_orig1,x_orig2,y,'g--s');
        grid on
        hold off;
    end
end
 


Diesen Code habe ich nun versucht auf 3 Variablen zu erweitern und habe den folgenden Code:
Code:

function [] = mit_3_Variablen()
clear all;
clc;

x_orig1 = [500 1000 1500]
x_orig2 = [-10 0 20]
x_orig3 = [25 75 50]
y_orig  = [142.25 14062.5 14065.5]

%Startwerte für das Lambda
start=[1 0 1];
options=optimset('TolX', 1e-12);  %Abbruchkriterien einstellen
%Toleranz X - Tdx: 1e-12  %praktisch nie erreichbar -> kein Abbruch
%durch dieses Kriterium
estimated_lambda = fminsearch(@(lambda)fitten(lambda, x_orig1,x_orig2,x_orig3, y_orig),start,options)

%tf bilden und anzeigen in figure(2)
y_estimated= estimated_lambda(1)*x_orig1+estimated_lambda(2)*x_orig2+estimated_lambda(3)*x_orig3

title(['a=' num2str(estimated_lambda(1)) 'b=' num2str(estimated_lambda(2)) 'c=' num2str(estimated_lambda(3))])
ylabel('y')
xlabel('x')
zlabel('z')

    function [ err ] = fitten( lambda, x_orig1,x_orig2,x_orig3, y_orig)
        %  FITTEN Summary of this function goes here
        % ==========================================================================
        a=lambda(1);
        b=lambda(2);
        c=lambda(3);
        y=a.*x_orig1+b.*x_orig2+c.*x_orig3;

        err=norm(y-y_orig);
        figure(1);
        plot3(x_orig1,x_orig2,x_orig3, y_orig,'-rs');
        hold on;
        plot3(x_orig1,x_orig2,x_orig3, y,'g--s');
        grid on
        hold off;
    end
end
 

Kannst Du mir bitte erklären, wie ich nun an meine Werte der drei unabhängige Variablen komme.

Vielen Dank
Roland
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.10.2015, 15:33     Titel:
  Antworten mit Zitat      
Zitat:
Kannst Du mir bitte erklären, wie ich nun an meine Werte der drei unabhängige Variablen komme.

meinst du die parameter?
die sind doch in estimated_lambda gespeichert.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
blutiger Anfänger in Mat

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2015, 15:40     Titel:
  Antworten mit Zitat      
Ja, genau.
Ich meine die Parameter a b und c. Wie bekomme ich sie aus dem Lambda ausgelesen?

Vielen Dank
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 08.10.2015, 15:41     Titel:
  Antworten mit Zitat      
Zitat:
die sind doch in estimated_lambda gespeichert.

wenn die funktion das zurück geben soll musst du es als rückgabe argument mit angeben. momentan giebt deine funktion nach dem aufruf nichts zurück
_________________

richtig Fragen
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.