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

Ganz doofe Frage zum Thema was ist x und was y?

 

gigazwerg
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2009, 13:30     Titel: Ganz doofe Frage zum Thema was ist x und was y?
  Antworten mit Zitat      
Moin zusammen,

mir ist es schon fast etwas peinlich, aber ich sehe im Moment kein Land und brauche Hilfe.

Ich möchte mir eine Funktion darstellen lassen, die ich vorher berechnet habe. Die Funktion lautet

z = b1*x+b2*x*y+b3*x^2+b4

mit

x = (0:1:100)
y = (0:3:300)

Was in der Grafik zu sehen sein sollte ist, dass solange x = 0, kann y sein was immer es will. Das Ergebnis sollte b4 sein (siehe Gleichung). Schaue ich mir die Matrix z an, dann ist die oberste Reihe auch immer b4.

Wenn ich jetzt

surf(x,y,z) eingebe, dann ist aber alles genau umgedreht. In der grafik kann sich x ändern wie es will. Solange y = 0 ist z immer b4. Irgendwie ist da halt was verdreht.
Ich muss
surf(x,y,z') eingeben, damit ich das Ergebnis erhalte was ich möchte.

Daher meine Frage, wenn ich eine Matrix habe, was ist davon x und was y
y?


Ich hoffe ich konnte mich klar genug ausdrücken worum es mir geht und freue mich über Antworten, die die wolken in meinem Gehirn vertreiben.

Danke

Sebastian
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2009, 15:14     Titel:
  Antworten mit Zitat      
Lad' doch mal ein Beispiel hoch.
Bei mir funktioniert es wie erwartet.
 
Strauße
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 07.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2009, 15:32     Titel:
  Antworten mit Zitat      
Warum ist "z" eigentlich eine Matrix?
Private Nachricht senden Benutzer-Profile anzeigen
 
gigazwerg
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2009, 17:08     Titel:
  Antworten mit Zitat      
Ok. Ich dachte mir schon, dass es nicht gut erklärt war.

Hier ein aktuelles Beispiel.

Code:
% Das sind meine gemessenen Paramter mit denen ich ein Regressionsmodell bilde.
X=[0   0;0 0;22 0;33 0;66 0;100 0;0 100;22 100;33 100;66 100;100 100;...
0 200;22 200;33 200;66 200;100 200;0 300;22 300;33 300;66 300;...
100 300;50 200;78 300];

[a,b]=size(X);

% y ist die Matrix mit der Zielgröße.

y=[25.1;23.2;25.2;22.9;26;26;23.2;24.4;24.3;25.5;27.2;23.2;24.9;...
24;27.2;28.9;23.2;24.6;26.8;26.5;29.2;25.4;29.9];

% Hier wird das Regressionsmodell gebildet bzw. die Konstanten.

alfa = nlinfit(X,y(2:a,:),@square1,beta);
    b1 = alfa(1);
    b2 = alfa(2);
    b3 = alfa(3);
    b4 = alfa(4);
    b5 = alfa(5);
    b6 = alfa(6);

% Meine Faktoren für den Plot.

XX=(0:1:100);  % Länge
YY=(0:3:300);  % Breite

% Der Plot.

surf(XX,YY,(b1*XX'*ones(size(XX))+b2*ones(size(YY))'*YY+...
b3*XX'*YY+b4*XX'*XX+b5*YY'*YY+b6)')
hold;
scatter3(X(:,1),X(:,2),y)


Wie man bei "surf" sieht muss ich die Gleichung (z) transponieren, damit es stimmt. Ich habe heute auch ziemlich viel in der Hilfe gelesen, wonach die Matrix

A(m,n) ist.

Und bei Surf ist laut der Hilfe x=1:n und y=1:m.

Wenn das stimmt, dann würde ich mein Problem verstehen. Ich hoffe das war jetzt eindeutiger erklärt.

Danke für die Hilfe

Edit by Bijick: Code-Formatierung ergänzt (und Code etwas gestrafft). Bitte beim nächsten Mal selbst machen (Code-Button mittig über dem Eingabefenster). Danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2009, 17:29     Titel:
  Antworten mit Zitat      
Weil beta nicht definiert ist, spricht was dagegen so zu plotten:
Code:
b1=0.4;
b2=0.01;
b3=0.001;
b4=0.2;

% x = (0:1:100)
% y = (0:3:300)
[x,y]=meshgrid(0:1:100,0:3:300);
z = b1*x+b2*x.*y+b3*x.^2+b4;
surf(x,y,z)
xlabel('x');
ylabel('y');
zlabel('z');
shading interp;
?
 
gigazwerg
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2009, 17:55     Titel:
  Antworten mit Zitat      
@Gast

beta ist definiert. ich habe es nur nicht mit angegeben. Wäre das nicht der Fall, würde ich keine Regressionsgleichung bekommen.

Bei der Funktion surf wird Z als Matrix benötigt. Die Funktion ist surf(X,Y,Z).

Z(m,n) mit x=1:n und y=1:m.

Das heißt, ich müßte meine Gleichung so schreiben

surf(XX,YY,(b1*ones(size(XX))'*XX+b2*YY'*ones(size(YY))+b3*YY'*XX+b4*XX'*XX+b5*YY'*YY+b6))

Anstatt

surf(XX,YY,(b1*XX'*ones(size(XX))+b2*ones(size(YY))'*YY+b3*XX'*YY+b4*XX'*XX+b5*YY'*YY+b6))


Ich glaube ich bin der einzige Matlab-User damit Problem hat oder? Rolling Eyes Very Happy

Falsch2.jpg
 Beschreibung:
Das ist deine variante (Gast). Hier hat sich alles etwas verschoben.

Download
 Dateiname:  Falsch2.jpg
 Dateigröße:  27.5 KB
 Heruntergeladen:  591 mal
Falsch1.jpg
 Beschreibung:
So sieht es aus, wenn ich XX in als Reihe habe und YY als Spalte

Download
 Dateiname:  Falsch1.jpg
 Dateigröße:  58.33 KB
 Heruntergeladen:  603 mal
Richtig.jpg
 Beschreibung:
So soll es aussehen.

Download
 Dateiname:  Richtig.jpg
 Dateigröße:  55.79 KB
 Heruntergeladen:  557 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2009, 10:49     Titel:
  Antworten mit Zitat      
Dann reich das beta doch mal nach...
Ich bekomme mit meinem Code ein anderes Bild; eines, in dem im Gegensatz zu Deinem Richtig.jpg die Funktion für x=0 auch wirklich b4 ist. (Bezogen auf die Funktion aus dem ersten Post).
Guck Dir nochmal
Code:
an.
 
gigazwerg
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 27.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2009, 15:33     Titel:
  Antworten mit Zitat      
Hi Gast,

ich muss mich bei dir bedanken. ich bin jetzt noch auf ein ganz anderes Problem gestoßen. Deine Variante funktioniert. Ich hatte vergessen, den Punkt vor das Multiplikationszeichen zu setzen. Damit hatte ich eine Matrixmultiplikation vorgenommen und keine elementare.
Mit Meshgrip wird auch x und y automatisch auf die richtigen Achsen gesetzt.
In meiner Version war es vertauscht. Dazu habe ich x^2 über x'*x berechnet, was ebenfalls falsch von mir war.

Du hast mir also geholfen gleich mehrere Probleme (von den meisten wußte ich bis eben nicht mal) zu lösen. Smile

Danke schön

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