2017-08-18 6 views
1

Ich versuche ein Programm zu machen, um kartesische Koordinaten in Polarkoordinaten zu konvertieren.Wie kann ich MATLAB dazu bringen, Radianten in Bezug auf Pi anzuzeigen?

Mein Rechner gibt arctan(1) als pi/4 zurück.

MATLAB auf der anderen Seite gibt atan(1) als 0.7854 zurück.

Wie kann ich MATLAB dazu bringen, Zahlen wie diese als Ausdrücke von pi zurückzugeben?

+1

Gibt es einen bestimmten Grund, warum Sie möchten, dass es in 'Pi' ausgedrückt wird? 'pi/4 = 0,7854'. Wenn es Ihr Ziel ist, 'arctan (1)' in numerischen Berechnungen zu verwenden, dann sollte es Ihnen egal sein, wie es numerisch dargestellt wird - ob auf Ihrem persönlichen Rechner oder in MATLAB. Die physikalische Größe ist äquivalent. Wenn Sie es beispielsweise in einem Diagramm oder einer Figur anzeigen möchten, ist das anders. Bitte geben Sie an, welches Endziel dies wäre. – rayryeng

+0

Hauptsächlich, dass es einfacher für mich ist, zu identifizieren, in welchem ​​Quadranten meine Antwort in –

+1

fällt. Quadranten sind in Vielfache von 'pi/2 = 1,57' aufgeteilt. Daher wäre ein Wert zwischen 0 und 1,57 der erste Quadrant, ein Wert zwischen 1,57 und 3,14 wäre der vierte Quadrant, ein Wert zwischen -1,57 und 0 wäre der zweite Quadrant und schließlich ein Wert zwischen -3,14 und -1,57 ist der dritte Quadrant. Ich würde Ihnen empfehlen, zu wissen, in welchem ​​Quadranten numerische Bereiche verwendet werden, anstatt sich auf die Konvertierung zu verlassen, wie z. B. die unten angegebene Antwort. Wenn Sie den Code über einen längeren Zeitraum ausführen möchten, erhalten Sie anhand der folgenden Antwort Leistungsperioden. – rayryeng

Antwort

1

Für einige bestimmte Werte von pi Sie symbolic Zahlen, zum Beispiel verwenden können:

atan(sym(1)) 
ans = 
pi/4 

asin(sym(3^.5/2)) 
ans = 
pi/3 

Beachten Sie, dass dies die Symbolic Math Toolbox erfordert.

hoffe, das hilft,

Qapla‘

+2

* Wenn Sie die symbolische Math Toolbox haben, beachten Sie dies wird einen Leistungseinbruch – Wolfie

1

Wie Sie gesagt haben, dies nur für eine schnelle visuelle Kontrolle ist, würde ich von pi nur teilen:

n = 0.7854; 
disp(['n in terms of pi: ', num2str(n/pi), '*pi']); 
>> n in terms of pi: 0.25*pi 

Ist dies etwas war Sie wollten oft tun, würde ich eine Funktion auf Ihrem local path wie so definieren

Dann

n = 0.7854; 
[val, str] = wrtpi(n) 
>> val = 0.25 
    str = n in terms of pi: 0.25*pi 

Sie sagen, auch diese nur zur Identifizierung von Radiant Quadranten ist, abgesehen von ihnen zu lernen, können Sie auch einfach nur eine einfache Funktion

function q = quadrant(n) 
    Qs = pi*[0, 1/2, 1, 3/2];    % Quadrants 
    q = find(Qs <= mod(n,2*pi), 1, 'last'); % Index within the quadrants 
    % You could make this accept vector inputs using: 
    % q = arrayfun(@(x) find(Qs <= mod(x,2*pi), 1, 'last'), n) 
end 

Dann

quadrant(2*pi - 0.0001) % >> 4 
quadrant(0.2)   % >> 1 
quadrant(1.6)   % >> 2 

Beachten Sie, dass die Verwendung der symbolischen Mathematik-Toolbox für etwas so Einfaches wahrscheinlich mehr Komplikationen und Verlangsamung verursacht als es hilft!

+0

Prost, nicht sicher, ob das der eleganteste Weg, um den Quadranten zu finden, aber es war die erste Logik, die in den Sinn kam ! – Wolfie

Verwandte Themen