?? 點群分析m2.bas
字號:
Attribute VB_Name = "modMethod"
'點群分析
Option Explicit
'數(shù)據(jù)的標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化變換
'X(1 To n,1 To m):原始數(shù)據(jù),執(zhí)行后保存變換后的數(shù)據(jù)
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:樣品數(shù);m:變量數(shù)
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是標(biāo)準(zhǔn)差
For I = 1 To N
X(I, J) = (X(I, J) - Ave) / S '標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化變換
Next I
Next J
End Sub
'數(shù)據(jù)的極差標(biāo)準(zhǔn)化變換
'X(1 To n,1 To m):原始數(shù)據(jù),執(zhí)行后保存變換后的數(shù)據(jù)
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:樣品數(shù);m:變量數(shù)
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 '極差標(biāo)準(zhǔn)化變換
Next I
Next J
End Sub
'數(shù)據(jù)的極差正規(guī)化變換
'X(1 To n,1 To m):原始數(shù)據(jù),執(zhí)行后保存變換后的數(shù)據(jù)
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:樣品數(shù);m:變量數(shù)
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 '極差標(biāo)準(zhǔn)化變換
Next I
Next J
End Sub
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -