最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

二維正交旋轉(zhuǎn)

2023-07-29 11:51 作者:耿大哥講算法  | 我要投稿

# 二維正交旋轉(zhuǎn)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib;matplotlib.rc("font",family='Microsoft YaHei')

#載荷矩陣的初始解
A=np.mat([[0.796,0.424],[0.731,0.610],[0.964,-0.235],[0.953,-0.285],
? ? ? ? ?[0.940,-0.323],[0.919,-0.379],[0.793,0.284],[0.881,0.160]])
#輸出旋轉(zhuǎn)前的載荷矩陣、共同度和Fj的方差貢獻(xiàn)
print('--------旋轉(zhuǎn)前的載荷矩陣--------')
print('分量|組件 ?組件1 ? 組件2 ? 共同度')
for i in range(A.shape[0]):
? ?print('分量'+str(i+1),end='\t')
? ?for j in range(A.shape[1]):print('%.3f'%A[i,j],end='\t')
? ?print('%.3f'%sum(A[i,j]**2 for j in range(A.shape[1])))
print('總貢獻(xiàn)',end='\t')
for j in range(A.shape[1]):print('%.3f'%sum(A[i,j]**2 for i in range(A.shape[0])),end='\t')
print('%.3f'%sum(sum(A[i,j]**2 for i in range(A.shape[0])) for j in range(A.shape[1])),end='\t')
print()
#定義載荷間的總方差函數(shù)
def ff(θ):
? ?Q=np.mat([[np.cos(θ),-np.sin(θ)],
? ? ? ? ? ? ?[np.sin(θ),np.cos(θ)]])
? ?h=[sum(A[i,j]**2 for j in range(A.shape[1])) for i in range(A.shape[0])]
? ?B=A*Q
? ?junzhi=[sum(B[i,j]**2/h[i] for i in range(A.shape[0]))/A.shape[0] for j in range(A.shape[1])]
? ?ff=sum(sum((B[i,j]**2/h[i]-junzhi[j])**2 for i in range(A.shape[0])) for j in range(A.shape[1]))
? ?return ff
#繪制載荷間的總方差函數(shù)隨θ的變化圖像并找到最大值對應(yīng)的θ
x=np.arange(0,np.pi/2,0.01);y=[ff(i) for i in x]
θ=x[y.index(max(y))];plt.plot(x,y,'r-')
plt.plot([θ,θ],[min(y),max(y)],'b*--')
plt.plot([0,θ],[max(y),max(y)],'b*--')
plt.xlabel('旋轉(zhuǎn)角(弧度制)');plt.ylabel('載荷間的總方差')
#計算使載荷間的總方差函數(shù)達(dá)到最大的旋轉(zhuǎn)矩陣Q
Q=np.mat([[np.cos(θ),-np.sin(θ)],[np.sin(θ),np.cos(θ)]])
#計算旋轉(zhuǎn)后的載荷矩陣
B=A*Q
#輸出旋轉(zhuǎn)后的載荷矩陣、共同度和Fj的方差貢獻(xiàn)
print('--------旋轉(zhuǎn)后的載荷矩陣--------')
print('分量|組件 ?組件1 ? 組件2 ? 共同度')
for i in range(B.shape[0]):
? ?print('分量'+str(i+1),end='\t')
? ?for j in range(B.shape[1]):print('%.3f'%B[i,j],end='\t')
? ?print('%.3f'%sum(B[i,j]**2 for j in range(B.shape[1])))
print('總貢獻(xiàn)',end='\t')
for j in range(B.shape[1]):print('%.3f'%sum(B[i,j]**2 for i in range(B.shape[0])),end='\t')
print('%.3f'%sum(sum(B[i,j]**2 for i in range(B.shape[0])) for j in range(B.shape[1])))
print('-'*29)
#輸出旋轉(zhuǎn)角度θ和載荷間的總方差最大值
print('旋轉(zhuǎn)角度θ='+str('%.0f'%(θ*180/np.pi))+'°')
print('載荷間的總方差='+str('%.3f'%ff(θ)))
#輸出使載荷間的總方差函數(shù)達(dá)到最大的旋轉(zhuǎn)矩陣Q
print('-----------變換矩陣-----------')
for i in range(Q.shape[0]):
? ?for j in range(Q.shape[1]):print('%.3f'%Q[i,j],end='\t')
? ?print()
print('-'*29);plt.show()

二維正交旋轉(zhuǎn)的評論 (共 條)

分享到微博請遵守國家法律
汪清县| 阜宁县| 砚山县| 遵义市| 石渠县| 当涂县| 定襄县| 兴安县| 丹凤县| 江西省| 桦川县| 外汇| 遵义市| 宁远县| 临海市| 南宫市| 新泰市| 怀化市| 谢通门县| 类乌齐县| 清丰县| 瑞金市| 乌拉特前旗| 深水埗区| 甘南县| 莱西市| 隆安县| 宁陵县| 义乌市| 沈阳市| 汨罗市| 沙洋县| 嘉兴市| 肇源县| 巴塘县| 永昌县| 尖扎县| 衡南县| 长武县| 综艺| 砚山县|