2015-03-08 9 views
5

के लिए एक मेष्रिड बनाएं, मैं निम्नलिखित सरणी का उपयोग करके ध्रुवीय निर्देशांक के लिए जाल ग्रिड बनाना चाहता हूं।ध्रुवीय निर्देशांक

R = 1.15 
r = numpy.linspace(R,5,100) 
theta = numpy.linspace(0,2*numpy.pi,145) 

मैं इसे इस तरह की कोशिश की, numpy का उपयोग कर:

X,Y=numpy.meshgrid(r*numpy.cos(theta),r*numpy.sin(theta)) 

लेकिन मैं इस त्रुटि हो रही है:

ValueError: operands could not be broadcast together with shapes (100,) (145,) 

मैं ग्रिड कैसे पैदा करते हैं और अंक तक प्रदर्शित करते हैं?

उत्तर

5

एक कार्टेशियन समन्वय प्रणाली में कनवर्ट न करें यदि आप बस दो 2 डी सरणी चाहते हैं जो एक ध्रुवीय ग्रिड पर r और theta निर्देशांक निर्दिष्ट करते हैं।

स्पष्टीकरण के लिए, आप जो त्रुटि देख रहे हैं वह इसलिए है क्योंकि आप असमान आकार के दो सरणी के बीच तत्व-वार गुणा नहीं कर सकते हैं, जो आपके पास है।

आप इस तरह यह बुला जाना चाहिए:

radius_matrix, theta_matrix = numpy.meshgrid(r,theta) 

तो फिर तुम लिखकर कार्तीय निर्देशांक को परिवर्तित कर सकते हैं (यदि वास्तव में आवश्यक):

X = radius_matrix * numpy.cos(theta_matrix) 
Y = radius_matrix * numpy.sin(theta_matrix) 

दृश्य तुरंत एक ध्रुवीय ग्रिड पर किया जा सकता है उदाहरण के लिए matplotlib: यदि आप एक और उदाहरण चाहते हैं

import matplotlib.pyplot as plt 
ax = plt.subplot(111, polar=True) 
ax.plot(theta_matrix, radius_matrix, color='r', ls='none', marker='.') 

polar plot demo पर एक नज़र डालें।

plt.plot(X,Y, 'r. ') 
plt.show() 
:

वैकल्पिक रूप से, आप कार्तीय निर्देशांक हम एक कार्तीय ग्रिड पर पहले से प्राप्त की साजिश रचने से ध्रुवीय ग्रिड आपके द्वारा किए साजिश कर सकता है

संबंधित मुद्दे