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

Gleichung in 3D Surface Graphen abbilden - nur wie?

 

Gregory01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2015, 03:36     Titel: Gleichung in 3D Surface Graphen abbilden - nur wie?
  Antworten mit Zitat      
Hallo,

ich habe momentan ein Problem in Matlab, das mich langsam verzweifeln lässt:

Ich habe drei Variablen (Risiko(x), Service(y) und Kaufintention(z). Kaufintention kann durch x und y erklärt werden. Beide haben je 762 Werte, die als Vektoren abgebildet werden. Die Regression hat folgende Gleichung hervorgebracht, mit der z gut vorhergesagt werden kann:

z = (-0.52762)*x + 0.48075*y + (-0.031536)*(x*y) + (-0.012998)*(y^2) + 0.038811*(x*y^2)

Mein Ziel ist es nun, diese Formel in einem 3D Surface abzubilden und eine visuelle Fläche zur besseren Illustration auf Höhe von z = 0 einzublenden.

Mein Werte Bereich lieght zwischen -3 und 3 für alle Variablen.

Was ich bisher versucht habe: Curve Fitting Tool liefert zwar ein plausibles Ergebnis, allerdings weichen die absoluten Werte von den Ergebnissen ab, die ich beim einsetzen von X und Y in die oben stehende Gleichung erhalte. Das liegt wohl daran, dass die Gleichung hier gefittet wird, anstatt die erhaltenen Werte aus der Regression zu übernehmen und somit zu einem gewissen delta führt.

Meine Versuche mit surf (X,Y,Z) bringen leider bisher nur Fehlermeldungen. Kann mir jemand in der Sache helfen?


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.11.2015, 08:28     Titel:
  Antworten mit Zitat      
Zitat:
Meine Versuche mit surf (X,Y,Z) bringen leider bisher nur Fehlermeldungen

dann poste bitte den entsprechenden code und die fehlermeldungen.
warum uns raten lassen wenn du es direkt vor dir auf dem bildschirm hast.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Gregory01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2015, 12:04     Titel: Cde
  Antworten mit Zitat      
Ja, sorry!

Code:

z=purc_int_GES_ctrd(2:763);
x=psy_rsk_ctrd(2:763);
y=serv_qual_ctrd(2:763);

z = (-0.52762*x + 0.48075*y - 0.031536*(x*y) + (-0.012998*y^2) + 0.038811*((x)*y^2))

surf(x,y,z)

Error using  *
Inner matrix dimensions must agree.
 
Gregory01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2015, 13:02     Titel: CurveFitting
  Antworten mit Zitat      
Was ich ebenso probiert habe und mir zumindest einen Plot gebracht hat:

Code:
a= 1.6067
dwxma= 0.11549    
dwxvs= 0.052637    
    d1     =         0.004414    
    d2      =        -0.38277    
    d3       =       -0.20337    
    d4        =      -0.16578    
    d5         =    -0.026965  
    d6          =    -0.36161    
    d7            =  -0.34997  
    d8             =  0.11092
    d9              =0.021666

[x, y, z] = prepareSurfaceData(psy_rsk_ctrd, serv_qual_ctrd, purc_int_GES_ctrd);
% Set up fittype and options.
ft = fittype( 'a+d1*c1+d2*c2+d3*c3+d4*c4+d5*c5+d6*c6+d7*c7+d8*c8+d9*c9+dwxma*wxma+dwxvs*wxvs+p1*x +p2*y +p3*(x*y) +p4*(y^2) +p5*(x*(y^2))', 'independent', {'x', 'y'}, 'dependent', 'z' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
% Fit model to data.
[fitresult, gof] = fit( [x, y], z, ft, opts );
% Plot fit with data.
figure( 'Name', 'Cubic' );
plot( fitresult, [x, y], z );
% Label axes
xlabel Psychological.Risk
ylabel Service.Quality
zlabel Purchase.Intention
grid on
view( -42.3, 27.6 );
zLine(1) = line([-3 3], [-3 -3], [-1.308 -1.810], 'Color','b' ,'LineWidth',3);
zLine(1) = line([-3 3], [0 0], [1.583 -1.583], 'Color','r' ,'LineWidth',3);
zLine(1) = line([-3 3], [3 3], [2.144 0.506], 'Color','y' ,'LineWidth',3);
 


Die drei Linien im Graph zeigen die Werte, die ich mit Excel errechnet habe, wenn ich verschiedene Annahmen, z.B. x = 3, Y =-3 mit der oben genannten Formel überprüfe.

Code:
z = (-0.52762*x + 0.48075*y - 0.031536*(x*y) + (-0.012998*y^2) + 0.038811*((x)*y^2))


Man sieht halt, dass die Kurve zwar ähnlich zu den Werten aus Excel ist, allerdings die Linien nicht ganz dem entsprechen. Falls jemand weiß, woher die Differenz kommt, würde ich mich freuen.

Ein Erklärung wäre, dass ich keine Konstante am Anfang meiner Formel habe und die Werte mit Gewichtungen von c1, c2 etc. nicht mit im Curve Fitting Tool berücksichtigt werden...
 
Gregory01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2015, 13:06     Titel: Dazugehörige Grafiken
  Antworten mit Zitat      
[img]http://www.bilder-upload.eu/show.php?file=76bf67-1446898956.png[/img]
 
Gregory01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2015, 13:07     Titel: Nochmal...
  Antworten mit Zitat      
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.11.2015, 16:05     Titel:
  Antworten mit Zitat      
Zitat:
Error using *
Inner matrix dimensions must agree.
#
man kann den fehler anklicken. da wird erklärt was der macht. du hast matrixmultiplikation benutzt und diese ist nur definiert wenn die matritzen eine bestimmte form haben.

ich würde aus x und y mit meshgrid erstmal ein grid erstellen und dann das in z einsetzen.
also so ca
Code:
[xx,yy]=meshgrid(x,y)
z = (-0.52762*xx + 0.48075*yy - 0.031536*(xx.*yy) + (-0.012998*yy.^2) + 0.038811*((xx).*yy.^2))
surf(xx,yy,z)
 

ob das klappt häbngt aber auch von x und y ab (monotonie etc) das kann ich so erstmal nicht sagen da ich ja nicht alle daten hab
_________________

richtig Fragen

Zuletzt bearbeitet von Winkow am 07.11.2015, 16:54, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Gregory01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2015, 16:29     Titel: ...
  Antworten mit Zitat      
Danke schonmal, aber klappt leider nicht...

Code:
Error using surf (line 69)
Z must be a matrix, not a scalar or vector.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.11.2015, 16:54     Titel:
  Antworten mit Zitat      
ja beim copy pasten hatte ich wohl noch was falsches in der zwischenablage. x und y müssen natürlich ausgetauscht werden.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Gregory01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2015, 19:07     Titel: Vielen Dank!
  Antworten mit Zitat      
Hallo Winkow, vielen Dank, dass hat super geklappt!!! Die Grafik sieht jetzt schon fast so aus, wie sie sein soll.
Jetzt gilt es für mich noch folgende grafische Probleme zu lösen:

a) Einfügen einer durchsichtigen Hilfsfläche auf Höhe z =0
b) einfügen von Kontouren auf der untersten Ebene (bei z = -3)
c) Pfeile anstatt Linien einfügen machen
Für Linien hatte ich schon folgenden Code generiert:

Code:
zLine(1) = line([-3 3], [-3 -3], [-1.308 -1.810], 'Color','b' ,'LineWidth',3);
zLine(2) = line([-3 3], [0 0], [1.583 -1.583], 'Color','r' ,'LineWidth',3);
zLine(3) = line([-3 3], [3 3], [2.144 0.506], 'Color','y' ,'LineWidth',3 );
 


brauche die Linien aber in schwarz und mit Pfeilspitze.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.11.2015, 19:53     Titel:
  Antworten mit Zitat      
Zitat:
Einfügen einer durchsichtigen Hilfsfläche auf Höhe z =0

mal die eigenschaft facealpha angucken. denke das könnte das sein.
Code:
einfügen von Kontouren auf der untersten Ebene (bei z = -3)

contour und die einträge unter see also könnten hilfreich sein.
Zitat:
Pfeile anstatt Linien einfügen machen

mal unter quiver nachgucken
_________________

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