Как применить определенные функции к массивам в Python? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть две функции: 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».Массив "х" остается неизменным.

Проблема в том, что я не знаю, как применить эти функции к моей проблеме.Я попытался заменить "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 не определены по некоторым причинам.

1 Ответ

0 голосов
/ 06 октября 2018

Я не совсем уверен, что это именно то, что вам нужно, но есть нечто, называемое функцией 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].

Надеюсь, это поможет.

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