信号与系统课的作业,要求比较用numpy和不用numpy的代码计算离散卷积的速度
题目给了不用numpy库情况下的代码:
def numpyless_conv(x, y):
# Create output array
N = len(x) + len(y) - 1 # Convolving a duration D signal and a duration K signal gives a duration D+K-1 signal
out = [0 for i in range(N)]
# Pad for ease of implementation
y_rev = y[::-1]
zeros_x = [0 for i in range(N - len(x))]
zeros_y = [0 for i in range(N - len(y))]
x_pad = zeros_x + list(x)
y_rev_pad = list(y_rev) + zeros_y
for n in range(N):
# This loop computes the dot product
for i in range(N):
out[n] += x_pad[i] * y_rev_pad[i]
y_rev_pad = [y_rev_pad[i] for i in range(-1, N-1)] # Circularly shift everything one to the right
return out
下面跪求用numpy情况下的代码。。