Python вопросы (свертка) - PullRequest
0 голосов
/ 18 мая 2018
h = np.array([1, 1, 1, 0, 0])
x = np.array([0.5, 2, 0, 0, 0])

length = len(h)+len(x)-1

h_conv, h_rev, x_conv, y_conv = np.zeros(length), np.zeros(length), np.zeros(length), np.zeros(length)
x_conv[:len(x)] = x
h_rev[length-len(h):] = h[::-1].copy()

for t in range(length):
    h_conv[:t+1] = h_rev[length-t-1:]
    y_conv[t] = np.sum(x_conv * h_conv)

>>> y
[0.5, 2.5, 2.5, 2., 0., 0., 0., 0., 0.]

Как написать три строки для цикла for без использования предопределенных методов?

Я пытался:

for i in range(length):
    y[i]=0;
    for j in range(length):
        y[i] += x[i-j]*h[j];


Error index 0 is out of bounds for axis with size 0

1 Ответ

0 голосов
/ 18 мая 2018

Проблема с вашим кодом в том, что j может быть больше, чем i.Вы имели в виду:

for i in range(length):
    y[i]=0;
        for j in range(i):
        y[i] += x[i-j]*h[j];

или, возможно, i+1 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...