Verfasst am: 29.08.2016, 20:25
Titel: plot3 Fehlerhaft, Verbindung mit Koordinatenursprung
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);
ifabs(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)
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.
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.
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?
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.
und es funktioniert, die Nullen werden beim Plot ignoriert.
Einstellungen und Berechtigungen
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
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.