この画像の行列についてKLTを行いたいのですが、ρ=1.0 のときにうまく動きません。
どこが悪いのかわかる人がいたら教えていただきたいです。
Python
1#Assignment2 2import numpy as np 3import matplotlib.pyplot as plt 4from pylab import rcParams 5 6N=10 7prod_rho_list=[0.9,0.91,0.92,0.93,0.94,0.95,0.96,0.97,0.98,0.99,1.0] 8 9V_list=[] 10for prod_rho in prod_rho_list: 11 Cmodel=np.eye(N) 12 for i in range(N-1): 13 if i==0: 14 rho=prod_rho 15 else: 16 rho*=prod_rho 17 18 add_matrix=rho*np.eye(N-i-1) 19 add2_matrix=rho*np.eye(N-i-1) 20 add_matrix=np.hstack([np.zeros((N-i-1,1+i)),add_matrix]) 21 add2_matrix=np.hstack([add2_matrix,np.zeros((N-i-1,1+i))]) 22 add_matrix=np.vstack([add_matrix,np.zeros((1+i,N))]) 23 add2_matrix=np.vstack([np.zeros((1+i,N)),add2_matrix]) 24 Cmodel+=add_matrix 25 Cmodel+=add2_matrix 26 #print(Cmodel) 27 28 S, V = np.linalg.eig(Cmodel) 29 30 V_list.append(V) 31 32rcParams['figure.figsize'] = 10,10 33fig=plt.figure() 34for i in range(11): 35 fig.add_subplot(6, 2, i+1) 36 plt.imshow(V_list[i]) 37 plt.title(prod_rho_list[i]) 38plt.tight_layout() 39plt.show() 40 41 42
近似的には次のコードを実行した結果が得られるはずです。
Python
1V_COS=np.zeros((N,N)) 2for i in range(N): 3 for j in range(N): 4 if j==0: 5 V_COS[i][j]=np.sqrt(1/N)*np.cos(((2*(i+1)-1)*((j+1)-1)*np.pi)/(2*N)) 6 else: 7 V_COS[i][j]=np.sqrt(2/N)*np.cos(((2*(i+1)-1)*((j+1)-1)*np.pi)/(2*N)) 8 9rcParams['figure.figsize'] = 10,4 10plt.imshow(V_COS) 11コード
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/12 13:17
2019/09/12 15:37