在Matlab中存在pdist2命令.给定矩阵mx2和矩阵nx2,每行矩阵代表一个2d点.现在我想建立一个mxn矩阵,使得(i,j)元素表示从距离i理论值的点mx2矩阵jTH的点nx2矩阵.我只是调用命令pdist2(M,N).
我在python中寻找替代方案.我当然可以写2 for循环,但由于我使用2个numpy数组,使用for循环并不总是最好的选择.在python宇宙中是否有针对此的优化命令?基本上我要求python替代MATLAB pdist2.
目标是绘制一个多边形,然后水平平移它。这必须以动画形式显示。以下是我的代码:-
import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
import time
import numpy as np
verts = np.array([
[0., -0.25],
[0.5, 0.],
[0., 0.25],
[0., -0.25]
])
codes = [Path.MOVETO,
Path.LINETO,
Path.LINETO,
Path.CLOSEPOLY,
]
path = Path(verts, codes)
fig = plt.figure()
ax = fig.add_subplot(111)
patch = patches.PathPatch(path, facecolor='orange')
ax.add_patch(patch)
ax.set_xlim(-10,10)
ax.set_ylim(-10,10)
plt.show()
time.sleep(1)
verts[:,0]=verts[:,0]+3
path = Path(verts, codes)
patch = patches.PathPatch(path, facecolor='orange')
ax.add_patch(patch)
plt.draw()
Run Code Online (Sandbox Code Playgroud)
到目前为止plt.show(),我画了一个三角形然后显示它。此后,我暂停一下以模拟动画时间的流逝。然后我重新绘制三角形,但是当我要求matplotlib刷新绘图时,没有任何变化。我在哪里犯错误?
第二个问题,我不想重新绘制三角形,而是只想使用诸如set_patch但没有这样的方法来更新已经存在的三角形的顶点坐标。而我们确实使用set_ydata等来修改现有绘图并创建动画。如何使用某种设置方法来制作所需的运动动画?
I have the following polygon which is just a set of 2D points as follows:-
poly0=[80 60
90 60
100 60
110 60
110 50
120 50
130 50
140 50
150 50
160 50
170 50
180 50
190 50
200 50
210 50
210 60
210 70
210 80
210 90
220 90
220 100
210 100
210 110
200 110
200 120
190 120
180 120
180 130
170 130
160 130
150 130
140 130
130 …Run Code Online (Sandbox Code Playgroud) python ×2
algorithm ×1
animation ×1
matlab ×1
matplotlib ×1
matrix ×1
numpy ×1
polygon ×1
python-2.7 ×1