SNV的python实现

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 16:25   43   0

SNV 标准正态变换的python代码

import scipy.io as scio
import numpy as np
import matplotlib.pyplot as plt

data=scio.loadmat("spectrums_class1.mat")   # x条光谱,y个光谱通道
testdata=np.array(data["data"])
print(testdata)
 
m=testdata.shape[0]
n=testdata.shape[1]
print(m,n)#
#求标准差
data_std=np.std(testdata,axis=1)   # 每条光谱的标准差
 
#求平均值
data_average=np.mean(testdata,axis=1)   # 每条光谱的平均值

#SNV计算
data_snv=[[((testdata[i][j]-data_average[i])/data_std[i]) for j in range(n)] for i in range(m)]
scio.savemat("spectrums_test.mat",{'data_snv':data_snv})

testdata = np.transpose(testdata)
plt.subplot(1,2,1)
plt.plot(testdata)
plt.subplot(1,2,2)
plt.plot(data_snv)
plt.show()
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP