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

Ebene über Kurven im 3D Raum ziehen #2

 

Shrox
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2020, 15:16     Titel: Ebene über Kurven im 3D Raum ziehen #2
  Antworten mit Zitat      
Hallo zusammen!
Ich hoffe ihr seid alle Gesund und wohl auf!

Vor einiger Zeit habe ich eine sehr ähnliche Frage gestellt:


https://www.gomatlab.de/viewtopic,p,193806.html#193806

Die dort im Raum liegenden kurven habe ich nun gedreht(siehe bild im Anhang). Wie genau muss sich mein surf befehl ändern damit auch hier wieder eine Ebene durch alle kurven gespannt wird?

Ergebnis Matrix ist die selbe:
Code:
MaAP =

    1.2409    1.0889    0.9360    0.6719    0.4707    0.3155
    0.7178    0.6100    0.4779    0.3542    0.2426    0.1642
    0.3829    0.3088    0.2335    0.1876    0.1187    0.0805
    0.2198    0.1746    0.1289    0.0940    0.0653    0.0421
    0.1257    0.0972    0.0733    0.0539    0.0395    0.0250
    0.0601    0.0566    0.0408    0.0328    0.0249    0.0169
 


Code vorher:

Code:
A1=MaHO(1,1:6);
A2=TempA(ones(1, 6));

B1=MaHO(2,1:6);
hi1=TempA(2);
B2=hi1(ones(1, 6));

C1=MaHO(3,1:6);
hi2=TempA(3);
C2=hi2(ones(1, 6));

D1=MaHO(4,1:6);
hi3=TempA(4);
D2=hi3(ones(1, 6));


E1=MaHO(5,1:6);
hi4=TempA(5);
E2=hi4(ones(1, 6));

F1=MaHO(6,1:6);
hi5=TempA(6);
F2=hi5(ones(1, 6));




figure
plot3(Dd,A2,A1,'color','red','LineWidth',3)
hold on
plot3(Dd,B2,B1,'color','green','LineWidth',3)
plot3(Dd,C2,C1,'color','black','LineWidth',3)
plot3(Dd,D2,D1,'color','blue','LineWidth',3)
plot3(Dd,E2,E1,'color','cyan','LineWidth',3)
plot3(Dd,F2,F1,'color','magenta','LineWidth',3)

surf(repmat(Dd(:), 1, 6), [A2'; B2; C2; D2; E2; F2]', [A1; B1; C1; D1; E1; F1]', 'EdgeColor', [0 0.4470 0.7410])
%shading interp


title('Holding')
xlabel('MVD [\mum]')
ylabel('Temperatur [K]')
zlabel('Eismenge [lb]')
grid on


Code wo die Kurven auf eine andere Sichtweise im Raum liegen:

Code:
%Plot Holding

A1=MaHO(1:6,1);
A2=Dd(ones(1, 6));


B1=MaHO(1:6,2);
hi1=Dd(2);
B2=hi1(ones(1, 6));

C1=MaHO(1:6,3);
hi2=Dd(3);
C2=hi2(ones(1, 6));

D1=MaHO(1:6,4);
hi3=Dd(4);
D2=hi3(ones(1, 6));


E1=MaHO(1:6,5);
hi4=Dd(5);
E2=hi4(ones(1, 6));

F1=MaHO(1:6,6);
hi5=Dd(6);
F2=hi5(ones(1, 6));

figure

plot3(A2,LWC(1,:),A1,'color','red','LineWidth',3)
hold on
plot3(B2,LWC(2,:),B1,'color','green','LineWidth',3)
plot3(C2,LWC(3,:),C1,'color','black','LineWidth',3)
plot3(D2,LWC(4,:),D1,'color','blue','LineWidth',3)
plot3(E2,LWC(5,:),E1,'color','cyan','LineWidth',3)
plot3(F2,LWC(6,:),F1,'color','magenta','LineWidth',3)


title('Holding')
xlabel('mvd')
ylabel('LWC')
zlabel('Sigma')
grid on


Im Anhang befinden sich die "neuen" kurven als Bild.
Ich hoffe das mir jemand weiter helfen kann!

Bleibt alle Gesund!

Liebe Grüße
Shrox

mcd fr.PNG
 Beschreibung:

Download
 Dateiname:  mcd fr.PNG
 Dateigröße:  63.09 KB
 Heruntergeladen:  195 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

hast du es denn selbst mal versucht?
Welche Probleme sind dabei aufgetreten? Du brauchst ja nur 3 Matrizen anzugeben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shrox
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2020, 18:22     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe natürlich erstmal selber versucht das Problem zu lösen.
Die zwei Fehler die ich bekomme sind:


Z must be a matrix, not a scalar or vector.

oder wenn ich Z als Matrix angebe:

Data dimensions must agree.

mein Ansatz ist:

Code:
surf(repmat([A2; B2; C2; D2; E2; F2], LWC(:), 1, 6), [A1, B1, C1, D1, E1, F1])


Verbunden mit dem Fehler: Replication factors must be a row vector of integers or integer scalars.

Ich verstehe anscheinend grundlegend nicht in wie Surf funktioniert.
Würdest du mir erklären was genau surf macht?


Grüße
Shrox

edit: falscher code
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Du brauchst 3 Matrizen, nicht 2.
Auch ist repmat nicht sinnvoll, wenn du schon eine Matrix hast.

Sinnvoller erscheint mir:
Code:
surf([A2; B2; C2; D2; E2; F2], LWC, [A1; B1; C1; D1; E1; F1])


Das setzt voraus, dass A1 - F1 und A2 - F2 Spaltenvektoren sind. Falls sie das nicht sind, transponieren.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shrox
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2020, 01:16     Titel:
  Antworten mit Zitat      
Hallo Harald,

ok. liegt nahe das man 3 Matrizen braucht die die selben Dimensionen haben.
Da stand ich einfach auf dem Schlauch.

mit:

Code:
surf([A2; B2; C2; D2; E2; F2]', LWC, [A1 B1 C1 D1 E1 F1])


funktioniert es jetzt. Allerdings sieht es so aus:

[img]https://imgur.com/a/7rf8C22[/img]

Gibt es einen Weg die Ebene "weicher" um die Kurven zu legen?

Grüße
Shrox


>im Anhang nochmal das Bild falls der Link nicht geht

MVD .PNG
 Beschreibung:

Download
 Dateiname:  MVD .PNG
 Dateigröße:  92.55 KB
 Heruntergeladen:  192 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.05.2020, 09:51     Titel:
  Antworten mit Zitat      
Hallo,

was mich wundert: die Ebene scheint nicht durch die Punkte zu gehen. Warum das so ist, kann ich ohne Daten erst mal nicht nachvollziehen.
Was das "weicher" angeht: falls du einen glatteren Verlauf meinst, musst du z.B. per Spline-Interpolation zusätzliche Datenpunkte errechnen und mit diesen die Oberfläche erstellen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shrox
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2020, 11:52     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich hab versucht die Ebene auf die Kurven zu bekommen. Leider ohne erfolg.
Vielleicht sehe ich den Wald vor lauter Bäumen nicht mehr Sad

Meine Ergebnisse stehen in dieser 6x6 Matrix:

Code:
MaAP =

    1.2409    1.0889    0.9360    0.6719    0.4707    0.3155
    0.7178    0.6100    0.4779    0.3542    0.2426    0.1642
    0.3829    0.3088    0.2335    0.1876    0.1187    0.0805
    0.2198    0.1746    0.1289    0.0940    0.0653    0.0421
    0.1257    0.0972    0.0733    0.0539    0.0395    0.0250
    0.0601    0.0566    0.0408    0.0328    0.0249    0.0169



mit LWC:

Code:
LWC= [0.8 0.64 0.5 0.38 0.26 0.15;
      0.7 0.54 0.4 0.3 0.2 0.14;
      0.6 0.42 0.3 0.22 0.15 0.1;
      0.43 0.31 0.24 0.16 0.11 0.08;
      0.3 0.21 0.15 0.11 0.08 0.06;
      0.2 0.14 0.1 0.07 0.05 0.04  ]


Der Plot befehlt ist folgender:

Code:
%Plot Approch
A1=MaAP(1:6,1);
A2=Dd(ones(1, 6));


B1=MaAP(1:6,2);
hi1=Dd(2);
B2=hi1(ones(1, 6));

C1=MaAP(1:6,3);
hi2=Dd(3);
C2=hi2(ones(1, 6));

D1=MaAP(1:6,4);
hi3=Dd(4);
D2=hi3(ones(1, 6));


E1=MaAP(1:6,5);
hi4=Dd(5);
E2=hi4(ones(1, 6));

F1=MaAP(1:6,6);
hi5=Dd(6);
F2=hi5(ones(1, 6));

figure

plot3(A2,LWC(1,:),A1,'color','red','LineWidth',3)
hold on
plot3(B2,LWC(2,:),B1,'color','green','LineWidth',3)
plot3(C2,LWC(3,:),C1,'color','black','LineWidth',3)
plot3(D2,LWC(4,:),D1,'color','blue','LineWidth',3)
plot3(E2,LWC(5,:),E1,'color','cyan','LineWidth',3)
plot3(F2,LWC(6,:),F1,'color','magenta','LineWidth',3)

surf([A2; B2; C2; D2; E2; F2]', LWC, [A1 B1 C1 D1 E1 F1])


title('Approch')
xlabel('mvd')
ylabel('LWC')
zlabel('Sigma')
grid on
 



Ich wäre dir so unendlich dankbar wenn du auch einen blick darauf werfen würdest!
Vielen Dank für deine Zeit!

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

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.05.2020, 13:06     Titel:
  Antworten mit Zitat      
Hallo,

das Transponieren war an der falschen Stelle:
Code:
surf([A2; B2; C2; D2; E2; F2], LWC, [A1 B1 C1 D1 E1 F1]')

So entspricht jeder plot3-Befehl einer Zeile in allen drei Argumenten.

Du würdest dir einiges erleichtern, wenn du konsequent Zeilen- oder Spaltenvektoren verwenden würdest.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Shrox
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2020, 14:58     Titel:
  Antworten mit Zitat      
Hallo Harald,

oh man. Ja, das hab ich echt unschön Programmiert.
Nochmals vielen Dank.
Bleib Gesund und danke das du allen hier im Forum so aushilfst!

Grüße
Shrox
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.