2015-03-08 12 views
5

Voglio creare una griglia per le coordinate polari usando i seguenti array.creare un meshgrid per coordinate polari

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

ho provato in questo modo, utilizzando numpy:

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

ma sto ottenendo questo errore:

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

Come faccio a generare la griglia e visualizzare i punti?

risposta

5

Non convertire in un sistema di coordinate cartesiano se si desidera semplicemente due array 2D che specificano le coordinate r e theta su una griglia polare.

Per chiarire, l'errore che si sta osservando è perché non è possibile eseguire la moltiplicazione di elementi tra due matrici di forma disuguale, che è ciò che si ha.

Si dovrebbe essere chiamata in questo modo:

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

allora si potrebbe convertire in coordinate cartesiane (se davvero necessario) digitando:

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

visualizzazione potrebbe essere fatto su una griglia polare subito , usando eg matplotlib:

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

Date un'occhiata alla polar plot demo se volete un altro esempio.

alternativa, è possibile tracciare la griglia polare che hai fatto tracciando le coordinate cartesiane che abbiamo ottenuto in precedenza su una griglia cartesiana:

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