📄
字号:
Attribute VB_Name = "modMethod"
'点群分析
Option Explicit
'数据的标准差标准化变换
'X(1 To n,1 To m):原始数据,执行后保存变换后的数据
Public Sub Data_S1(X() As Double)
Dim M As Integer, N As Integer, I As Integer, J As Integer
Dim Ave As Double, S As Double
N = UBound(X, 1): M = UBound(X, 2) 'n:样品数;m:变量数
For J = 1 To M
Ave = 0
For I = 1 To N
Ave = Ave + X(I, J)
Next I
Ave = Ave / N 'Ave是平均值
S = 0
For I = 1 To N
S = S + (X(I, J) - Ave) ^ 2
Next I
S = Sqr(S / N) 'S是标准差
For I = 1 To N
X(I, J) = (X(I, J) - Ave) / S '标准差标准化变换
Next I
Next J
End Sub
'数据的极差标准化变换
'X(1 To n,1 To m):原始数据,执行后保存变换后的数据
Public Sub Data_S2(X() As Double)
Dim M As Integer, N As Integer, I As Integer, J As Integer
Dim xMax As Double, xMin As Double, Ave As Double, D As Double
N = UBound(X, 1): M = UBound(X, 2) 'n:样品数;m:变量数
For J = 1 To M
Ave = 0
For I = 1 To N
Ave = Ave + X(I, J)
Next I
Ave = Ave / N 'Ave是平均值
xMax = -100000000: xMin = 100000000
For I = 1 To N
If X(I, J) > xMax Then xMax = X(I, J)
If X(I, J) < xMin Then xMin = X(I, J)
Next I
D = xMax - xMin 'D是极差
For I = 1 To N
X(I, J) = (X(I, J) - Ave) / D '极差标准化变换
Next I
Next J
End Sub
'数据的极差正规化变换
'X(1 To n,1 To m):原始数据,执行后保存变换后的数据
Public Sub Data_S3(X() As Double)
Dim M As Integer, N As Integer, I As Integer, J As Integer
Dim xMax As Double, xMin As Double, D As Double
N = UBound(X, 1): M = UBound(X, 2) 'n:样品数;m:变量数
For J = 1 To M
xMax = -100000000: xMin = 100000000
For I = 1 To N
If X(I, J) > xMax Then xMax = X(I, J)
If X(I, J) < xMin Then xMin = X(I, J)
Next I
D = xMax - xMin 'D是极差
For I = 1 To N
X(I, J) = (X(I, J) - xMin) / D '极差标准化变换
Next I
Next J
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -