我想实现一个自定义公式,用于根据某些数学公式生成一个相等大小的矩阵(具有自定义行数和列数)。我坚持将不等矩阵的值存储到我的输出矩阵中,这需要具有相同的尺寸(3x3,5x5,9x9等)。不等于矩阵的相等尺寸
这是代码:
def mex3():
print "Say input size (d)"
d = int(raw_input("> "))
h = np.empty([d,d], dtype=np.float)
global lx
global ly
global x
global y
lx_list = []
ly_list = []
x_list = []
y_list = []
value = []
b = np.array([0, 0], dtype=np.float)
a = 1
for line in range(h.shape[0]):
for col in range(h.shape[1]):
lx = col - (d - 1)/2
ly = (d - 1)/2 - line
lx_list.append(lx)
ly_list.append(ly)
lam = np.column_stack((lx_list, ly_list))
for i in lx_list:
val = i - b[0]
x_list.append(val)
for j in ly_list:
val = j - b[1]
y_list.append(val)
xy = np.column_stack((lx_list, ly_list))
#This is the part that doesn't work
for line in range(h.shape[0]):
for col in range(h.shape[1]):
for i in xy[0]:
for j in xy[1]:
val = 0
val = (1 - i**2 - j**2) * math.exp(-((i**2)+(j**2))/2)
h[line, col] = val
return h
我的矩阵H输出仅存储从XY矩阵中的“VAL”变量的最后一个值,而不是相应的值。 编辑:例如: 说我xy矩阵已经是这样的形式:
[[-1. 1.]
[ 0. 1.]
[ 1. 1.]
[-1. 0.]
[ 0. 0.]
[ 1. 0.]
[-1. -1.]
[ 0. -1.]
[ 1. -1.]]
相应的矩阵H应该是这样的:
[[-1.,1. 0.,1. 1.,1.]
[-1.,0., 0.,0., 1.,0.]
[-1.,-1., 0.,-1., 1., -1.]
但请注意,我需要存储的结果值,从'val'变量而不是-1,1对。 所以输出应该是这样的:
[[-0.36787944 0. -0.36787944]
[ 0. 1. 0. ]
[-0.36787944 0. -0.36787944]]
继答案,我想这一点,但不工作:
global i, j
for line in range(h.shape[0]):
for col in range(h.shape[1]):
i = 0
j = 0
for i in xy[0]:
for j in xy[1]:
val = (1 - i**2 - j**2) * math.exp(-((i**2)+(j**2))/2)
h[line, col] = val
i += 1
j += 1
你是如何映射值从xy矩阵到h矩阵?可以向你展示xy矩阵的例子和基于xy矩阵的h应该是什么样子? –
我编辑了我的主帖。 – Litwos