Форум сайта python.su
Нужно знакомой девушке для завтрашней сдачи. Сам сдулся, с меня вознаграждение если осилим сегодня!
(numpy, matplotlib, mpl_toolkits.basemap и scipy не помешают)
# упрощенная сетка с данными x = 3,7,9 y = 1,4,5 z = 20,3,7 # дробим на grid и создаём сетку xi = np.linspace(min(x)-1, max(x)+1, 9) yi = np.linspace(min(y)-1, max(y)+1, 9) X, Y = np.meshgrid(xi, yi)
Офлайн
А обязательно линейная? тогда триангуляция Делоне и т п. http://faqs.org.ru/forum/viewtopic.php?f=79&t=27168
Посмотрите в этой ссылке метод обратных квадратов- позволяет сгладить точки без выкрутасов.
Офлайн
немного переработанный код отсюда. уж не знаю, поможет или нет. в любом случае - удачи!
# -*- coding: utf-8 -*- import numpy as np import scipy as sp from scipy.interpolate import griddata import random import matplotlib.pyplot as plt parts = 50 x = np.linspace(0.1, 2, parts) y = np.linspace(0.1, 1, parts) z = np.linspace(0.1, 10, parts) random.shuffle(y) random.shuffle(z) points = np.array([ list(p) for p in zip(x, y) ]) grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j] grid_z0 = griddata(points, z, (grid_x, grid_y), method='nearest') grid_z1 = griddata(points, z, (grid_x, grid_y), method='linear') grid_z2 = griddata(points, z, (grid_x, grid_y), method='cubic') ax = plt.subplot(221) plt.title('Original') plt.plot(points[:,0], points[:,1], 'k.', ms=1) for t in range(len(x)): ax.text(x[t], y[t] + 0.02, '%.1f' % z[t]) plt.subplot(222) plt.plot(points[:,0], points[:,1], 'k.', ms=1) plt.imshow(grid_z0.T, extent=(0,1,0,1), origin='lower') plt.title('Nearest') plt.subplot(223) plt.plot(points[:,0], points[:,1], 'k.', ms=1) plt.imshow(grid_z1.T, extent=(0,1,0,1), origin='lower') plt.title('Linear') plt.subplot(224) plt.plot(points[:,0], points[:,1], 'k.', ms=1) plt.imshow(grid_z2.T, extent=(0,1,0,1), origin='lower') plt.title('Cubic') plt.gcf().set_size_inches(6, 6) plt.show()
Отредактировано gisolog (Май 24, 2012 20:30:48)
Прикреплённый файлы:
interpolate.jpg (124,6 KБ)
Офлайн