2015-03-08 7 views
5

Я хочу создать сетку сетки для полярных координат, используя следующие массивы.создать meshgrid для полярных координат

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

Не конвертируйте в декартовую систему координат, если вы просто хотите, чтобы два 2D-массива задавали координаты 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() 
Смежные вопросы