我有两个功能:time_reversal
,它可以反转我的时间分量“ n”;和time_shift
,将我的时间坐标“ n”移动为“ k”个数量。这些是功能:
#time_reversal
def time_reversal(n):
ind = arange(n.size-1,-1,-1)
n_r=n[ind]
return n_r
# time_shift
def time_shift(n,k):
N=n.size
if k>=0:
N_ts=concatenate( (zeros(k),n[0:N-k]), 0)
else:
k=-k
N_ts=concatenate( (n[k:N],zeros(k)), 0)
return N_ts
给出等式:y[n]=y[n]+x[k]*h[n-k]
我需要将此等式应用于“ h”数组。我需要反转“ n”并将其移位为“ k”个数量。数组“ x”保持不变。
问题是我不知道如何将这些功能应用于我的问题。我试图这样替换“ n_r”和“ N_ts”:y[n]=y[n]+x[k]*h[n_r-N_ts]
,但它给了我错误。
编辑:程序
from numpy import*
from matplotlib.pyplot import*
x=array([2,1,-1])
h=array([1,2,1,0,1,2,1])
y=array([0,0,0,0,0,0,0,0,0])
def time_reversal(n):
ind = arange(n.size-1,-1,-1)
n_r=n[ind]
return n_r
def time_shift(n,k):
N=n.size
if k>=0:
N_ts=concatenate( (zeros(k),n[0:N-k]), 0)
else:
k=-k
N_ts=concatenate( (n[k:N],zeros(k)), 0)
return N_ts
for n in range(0,9):
for k in range(0,3):
y[n]=y[n]+x[k]*h[n_r-N_ts]
print("y = ",y)
它说由于某些原因未定义n_r和N_ts。
答案 0 :(得分:0)
我不能完全确定这是否是您想要的,但是有一种叫做map
的函数可以让您将函数应用于数组的每个元素并返回包含结果的新数组。例如:
def add2(n):
return n + 2
lst = [1, 2, 3]
print(list(map(add2, lst))) # convert from map object to list
结果列表为[3, 4, 5]
。
希望这会有所帮助。