作为项目的一部分,我必须用 Python 编写一个程序来表示 1 阶和 2 阶样条的缩放函数和 Battle-Lemarie 小波。对于 1 阶样条,我跟踪函数如下:
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-1.5,1.5,1024)
def phi(x):
p=[]
for i in range(len(x)):
if abs(x[i])<=1:
p.append(1-abs(x[i]))
else:
p.append(0)
return p
plt.plot(x,phi(x),'b',x,phi(2*x),'g',x,[elt/2. for elt in phi(2*x+1)],'g',x,[elt/2. for elt in phi(2*x-1)],'g')
plt.show()
函数phi与其翻译不正交,它必须为函数phi^#改变,我们只知道由phi_hat^# = sqrt(3) (2 * pi) ^ (-1/2) *(4定义的傅里叶变换sin^2(z/2)/( z ^ 2 (1 + 2 cos ^ 2 (z/2))。要找到这个函数,我的代码如下:
def ftphidiese(x):
ftphid=[]
for i in range(len(x)):
ftphid.append((np.sqrt(3.)*4.*(np.sin(x[i]/2.))**2)/(np.sqrt(2*np.pi)*(x[i]**2)*np.sqrt(1.+2.*(np.cos(x[i]/2.))**2)))
return ftphid
phidiese=np.fft.fftshift(np.fft.ifft(np.fft.ifftshift(ftphidiese(x))))
plt.plot(x,phidiese)
plt.show()
可惜结果不好,功能被“碾压”了。有人能帮我吗?