2

プロジェクトの一環として、次数 1 および 2 のスプラインのスケーリング関数と Battle-Lemarie ウェーブレットを表すプログラムを Python で作成する必要があります。次数 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^#は、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()

残念ながら、結果は良くなく、機能は「つぶれています」。誰かが私を助けることができますか?

4

0 に答える 0