当前位置: 首页>>代码示例>>Python>>正文


Python Renderer.j_multi方法代码示例

本文整理汇总了Python中renderer.Renderer.j_multi方法的典型用法代码示例。如果您正苦于以下问题:Python Renderer.j_multi方法的具体用法?Python Renderer.j_multi怎么用?Python Renderer.j_multi使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在renderer.Renderer的用法示例。


在下文中一共展示了Renderer.j_multi方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: from renderer import Renderer [as 别名]
# 或者: from renderer.Renderer import j_multi [as 别名]

#.........这里部分代码省略.........
		#Set reference image to unperturbed images
		self.renderer.initjacobian(y_im, y_flow, y_m)
		#Very inefficient... for now 
		for i in range(self.size()):
			for j in range(i, self.size()):
				hij = self.renderer.j(self, deltaX, i, j)
				HTH[i,j] = hij/deltaX/deltaX
				#Fill in the other triangle
				HTH[j,i] = HTH[i,j]
		self.refresh() 
		self.render()
		return HTH

	@timer_counter(stats.hessianrenderstc, stats.hessincsparse)
	def _hessian_sparse_multi(self, y_im, y_flow, y_m, deltaX = 2):
		HTH = np.zeros((self.size(),self.size()))
		HTH_c = np.zeros((4, self.size(), self.size()))

		for idx, e in enumerate(self.E_hessian):
			self.refresh(idx, hess = True) 
			self.render()
			#Set reference image to unperturbed images
			self.renderer.initjacobian(y_im, y_flow, y_m)
			ee = e.copy()
			eeidx = self.E_hessian_idx[idx]
			#print e 
			for i1 in range(2):
				for j1 in range(2):
					for i2 in range(2):
						for j2 in range(2):
							offset1 = i1+2*self.N*j1 
							offset2 = i2+2*self.N*j2 
							ee[:,0] = 2*e[:,0] + offset1 
							ee[:,1] = 2*e[:,1] + offset2 
							#Do the render
							(h, h_hist, hcomp) = self.renderer.j_multi(self, deltaX, ee, idx, eeidx)
							#Unpack the answers into the hessian matrix
							h = h[h_hist > 0]
							qidx = self.Q[np.squeeze(np.array(h_hist)),:]
							for idx2 in range(len(qidx)):
								q = qidx[idx2]
								q1 = 2*q[0]+i1+2*self.N*j1
								q2 = 2*q[1]+i2+2*self.N*j2
								HTH[q1,q2] = h[0,idx2]/deltaX/deltaX
								HTH[q2,q1] = HTH[q1,q2]
								HTH_c[0,q1,q2] = hcomp[idx2,0]/deltaX/deltaX
								HTH_c[0,q2,q1] = HTH_c[0,q1,q2]
								HTH_c[1,q1,q2] = hcomp[idx2,1]/deltaX/deltaX
								HTH_c[1,q2,q1] = HTH_c[1,q1,q2]
								HTH_c[2,q1,q2] = hcomp[idx2,2]/deltaX/deltaX
								HTH_c[2,q2,q1] = HTH_c[2,q1,q2]
								HTH_c[3,q1,q2] = hcomp[idx2,3]/deltaX/deltaX
								HTH_c[3,q2,q1] = HTH_c[3,q1,q2]

		self.refresh() 
		self.render()
		return HTH

	def _hessian_sparse(self, y_im, y_flow, y_m, deltaX = 2):
		HTH = np.zeros((self.size(),self.size()))
		self.refresh() 
		self.render()
		#Set reference image to unperturbed images
		self.renderer.initjacobian(y_im, y_flow, y_m)
		#Actually(!) here we only need compute this for vertices that are connected
		#! this will speed things up significantly. 
		#! also don't need to do for cross terms between vx and vy
		#This should become roughly linear... which makes the whole thing more
		#doable.........for instance, this will chop the time for square1 geometry
		#by a factor of ~4. Expect greater gains for larger geometries...
		for i in range(self.size()):
			for j in range(i, self.size()):
				if self.J[i,j] == 1:
					hij = self.renderer.j(self, deltaX, i, j)
				else:
					hij = 0.
				HTH[i,j] = hij/deltaX/deltaX
				#Fill in the other triangle
				HTH[j,i] = HTH[i,j]
		self.refresh() 
		self.render()
		return HTH

	def vertices(self):
		return self.X[0:(2*self.N)].reshape((-1,2))

	def velocities(self):
		return self.X[(2*self.N):].reshape((-1,2))

	def lengths(self):
		#Compute initial edge lengths...
		l = np.zeros((self.I,1))
		d = np.dot(self.K.T,self.vertices().reshape((-1,1)))
		for i in range(self.I):
			di = d[2*i:2*i+2,0]
			l[i,0] = np.sqrt(np.dot(di.T,di))
		return l

	def setforce(self,f):
		self.renderer.force = f 
开发者ID:benlansdell,项目名称:hydra,代码行数:104,代码来源:kalman.py


注:本文中的renderer.Renderer.j_multi方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。