/ / Matlab 3D-Plot auf zylindrischen Achsen - Matlab, 3d, zylindrisch

Matlab 3D-Plot auf zylindrischen Achsen - Matlab, 3d, zylindrisch

Ich habe Simulationen durchgeführt, die mir Datenpunkte entsprechend gegeben haben X Anzahl der verschiedenen Radien und Y Anzahl der Winkel, bei denen jeder bewertet wurde. Das bedeutet, dass ich habe X mal Y Datenpunkte, die ich plotten muss.

Ich zeichne es momentan nicht ideal auf: Ich benutze das x und y Achsen als die r und theta Achsen. Dies bedeutet, dass meine Daten als sinusförmiger Trend erscheinen, der mit dem Radius auf einem kartesischen Gitter zunimmt, nicht mit dem Kreis, den er physisch darstellt. So zeichne ich gerade meine Daten:

surf(r_val, th_val, v_val);

Was ich tun möchte, ist, meine Daten auf einer zylindrischen Achse zu zeichnen, so wie die der Funktion polar(), aber im R3-Raum. Ich möchte lieber keine Toolbox herunterladen oder die vorhandene Polarfunktion ändern. Wenn es keine andere Lösung gibt, dann werde ich natürlich trotzdem das tun.

Danke für Ihre Hilfe! G.

Außerdem verwende ich Matlab 2012a

BEARBEITEN:

r_val = 1x8 Vektor mit eindeutigen Radien

th_val = 1x16 Vektor mit eindeutigen Winkeln

v_val = 8 × 16-Matrix, die jeder Position entsprechende Spannungen enthält

HINWEIS: (nach beantwortet)

Die wirklich ideale Lösung existiert für dieses Problem nicht, da Matlab derzeit keine echten Polarachsen-Methoden unterstützt. Ressource hier gefunden.

Antworten:

5 für die Antwort № 1

Sie sollten Ihre Koordinaten in kartesische Koordinaten umwandeln, bevor Sie sie zeichnen. MATLAB verfügt über eingebaute Funktionen zur Durchführung von Koordiantentransformationen. Siehe zum Beispiel pol2cart, die polare oder zylindrische Koordinaten in kartesische Koordinaten umwandelt. In Ihrem Fall würden Sie einfach etwas wie:

[x, y] = pol2cart(th_val, r_val);

surf(x, y, v_val);

Bearbeiten: Angesichts dessen th_val und r_val Sind Vektoren unterschiedlich lang, ist es notwendig, vor dem Aufruf zuerst ein Raster von Punkten zu erstellen pol2cart, in Anlehnung an:

[R, T] = meshgrid(r_val, th_val);
[x, y] = pol2cart(T, R);
surf(x, y, v_val);