现在,X [n]可以是任何信号,任何函数,为简单起见,为了测试程序,我们可以将其视为指数函数。随着信号沿着子系统传播,它经历了一些转换,对于S1,转换为:
并且在S2之后是:
到目前为止,我已经做到了:
import numpy as np
import timeit
n=np.arange(-20,20)
y=np.zeros(n.shape)
x=np.exp(n)
def S1(inputSign, x_values, finalSys=True):
if finalSys==True:
output=np.zeros(x_values.shape)
for i in range(len(x_values)):
if x_values[i]%2==0:
output[i]=inputSign(x_values[i]/2)
else:
output[i] = 0
return output
else:
return inputSign
def S2(inputSign, x_values, finalSys=True):
if finalSys==True:
output=np.zeros(x_values.shape)
for i in range(len(x_values)):
output[i]=inputSign(x_values)+0.5*inputSign(x_values)+0.25*inputSign(x_values)
return output
else:
return inputSign+0.5*?????
现在,这些函数使用条件finalSys进行定义,该条件应该是:如果这是最后一个系统,它将为我提供一个值数组。目的是“级联”(S2(S1,n,finalSys = True),也许不是正确的术语)的功能,以获得仅取决于初始输入信号但最终由子系统转换的最终答案。我可以手动执行此操作,并获得结果系统的表达式,但是我正在将其作为学习练习,因此请耐心等待。我的麻烦一直是如何更改inputSign的参数。例如,S1(np.exp,n,finalSys = False)(2)应该返回与np.exp(1)相同的结果。