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

plot3 Fehlerhaft, Verbindung mit Koordinatenursprung

 

FriederikeLi
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.08.16
Wohnort: Wiesbaden
Version: ---
     Beitrag Verfasst am: 29.08.2016, 20:25     Titel: plot3 Fehlerhaft, Verbindung mit Koordinatenursprung
  Antworten mit Zitat      
Hallo,

Ich habe schon stunden das Internet durchforst und Fehlersuche betrieben-ohne Erfolg. Bei meinem Programm läuft so weit alles, nur seltsamerweise verbindet sich bei dem plot3 Befehl die Kurve,welche zu p=1 gehört und die letzte kurve mit dem Koordinatenursprung!

Ich hänge ein Bild von der Figure an.

Ich hoffe es ist nur ein dummer fehler und jemand kann mir helfen, auch für sonstige Anmerkungen/Verbesserungsvorschläge würde ich mich freuen. Ich habe viel "rumgebastelt" und weiß das meinvCcode nicht elegant ist!

Vielen Dank im Voraus!

Code:

function projektion(dgl,zeitspanne,plotspanne,ode,Xinit)
rotate3d on

for j=1:length(Xinit(:,1))
[T,Y1] = feval(ode,dgl,zeitspanne,Xinit(j,:));
[T,Y2] = feval(ode,dgl,-zeitspanne,Xinit(j,:));
Y_ges=vertcat(flipud(Y2),Y1);  
 for i=1:length(Y_ges)
   x=Y_ges(i,1);
   y=Y_ges(i,2);
                                                 
X(i,j)=x./sqrt(1+x.^2+y.^2);  
Y(i,j)=y./sqrt(1+x.^2+y.^2)  ;
Z(i,j)=1./sqrt(1+x.^2+y.^2);
   if abs(X(i,j)^2+Y(i,j)^2+Z(i,j)^2-1)>=10^-5
    disp('Achtung!')
   end
 end
hold on
xlabel(['X-Achse']);    
ylabel(['Y-Achse']);
zlabel(['Z-Achse']);
end
  for p=1:length(Z(1,:))
    plot3(X(:,p),Y(:,p),Z(:,p),'LineWidth',2)  
  end

%%%% Plot der Halbkugel mit Matlabbefehl sphere(n) mit nxn "Fenstern" %%%%
[v,w,t] = sphere(20);
tUp    =  t;
tUp(tUp < 0) = 0;  
surf(v, w, tUp,'FaceColor','magenta','FaceAlpha',0.025)

axis equal
 


Beispiel.fig
 Beschreibung:

Download
 Dateiname:  Beispiel.fig
 Dateigröße:  268.92 KB
 Heruntergeladen:  381 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.08.2016, 08:17     Titel:
  Antworten mit Zitat      
Hallo,

ich kann mir an sich nicht vorstellen, dass MATLAB da einfach so mit dem Ursprung verbindet. Ich würde davon ausgehen, dass das aus welchen Gründen auch immer in deinen Daten enthalten war.

Ohne Beispieldaten lässt sich das Verhalten leider nicht reproduzieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FriederikeLi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.08.16
Wohnort: Wiesbaden
Version: ---
     Beitrag Verfasst am: 30.08.2016, 09:23     Titel:
  Antworten mit Zitat      
Hey, Danke für die schnelle Antwort, ich schicke die Daten, welche ich benutzt habe...

Aufruf mit:

Code:
projektion('bsp_2',[0 30],150,'ode45',Xinit)


Funktion bsp_2 :

Code:

function xdot = bsp_2(t,x)
xdot = zeros(2,1);
xdot(1) = -4*x(2) + 2*x(1)*x(2)-8;
xdot(2) = 4*x(2)^2-x(1)^2;
 


Im Anhang Xinit

Liebe Grüße

Friederike

Xinit.mat
 Beschreibung:

Download
 Dateiname:  Xinit.mat
 Dateigröße:  19.29 KB
 Heruntergeladen:  315 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.08.2016, 15:40     Titel:
  Antworten mit Zitat      
Hallo,

beim Laden der .mat-Datei bekomme ich die Warnung
Warning: Could not find appropriate function on path loading function handle

Grundsätzlich ist es auch angenehm, wenn die Reproduktionsschritte möglichst kompakt sind.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FriederikeLi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.08.16
Wohnort: Wiesbaden
Version: ---
     Beitrag Verfasst am: 30.08.2016, 17:37     Titel:
  Antworten mit Zitat      
Hey,
dachte die mat datei wäre nur der Xinit Vektor...also es funktioniert jede beliebige nx2 Matrix als Xinit
Dann hier einen anderen Beispielvektor, aber auch hier sieht man die Verbindung zum Ursprung.

Code:

Xinit=[1 2;0 3;4 5;2 1]
 


Liebe Grüße
Friederike
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2016, 14:19     Titel:
  Antworten mit Zitat      
Hallo,

mit den gegebenen Daten sind jeweils 3 von 4 Elementen der letzten Zeile von X, Y und Z Null. Dann zeichnet plot3 das natürlich auch entsprechend.

Wenn die Verbindung mit dem Nullpunkt nicht erwünscht ist, dann liegt das Problem also nicht an plot3, sondern an X, Y, Z.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FriederikeLi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.08.16
Wohnort: Wiesbaden
Version: ---
     Beitrag Verfasst am: 31.08.2016, 15:31     Titel:
  Antworten mit Zitat      
tut mir leid, das verstehe ich nicht. Es wird doch kontrollier, ob X^2+Y^2+Z^2 =1 ist.... wie können dann alle 3 Null sein?
Kannst du mir sagen, was ich ändern müsste?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2016, 19:23     Titel:
  Antworten mit Zitat      
Hallo,

du bekommst ja vom Code Analyzer Warnungen, dass Matrizen nicht vorbelegt sind. Wenn du in einer Matrix nun ein Element in einer neuen Zeile hinzufügst, werden die andere auf 0 gesetzt. Wenn diese Nullen im späteren Verlauf nicht überschrieben werden, stehen sie eben am Ende immer noch in der Matrix.
Für mehrere Vektoren potentiell unterschiedlicher Länge würde ich Cell Arrays verwenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
FriederikeLi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 29.08.16
Wohnort: Wiesbaden
Version: ---
     Beitrag Verfasst am: 01.09.2016, 17:03     Titel:
  Antworten mit Zitat      
Hey, Danke für den Tipp mit Cell Arrays,mit denen sollte ich mich auf jeden Fall mal beschäftigen...

Ich habe jetzt einfach eine Zeile vor dem Plot Befehl eingefügt :
Code:

Z(Z==0)=NaN;
 

und es funktioniert, die Nullen werden beim Plot ignoriert.
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.