risou_gosa_total = 0.0
For pulse_sel = MEAS_START To MEAS_PHASE_COUNT Step 1
For freq_num = FREQ_START To FREQ_START + FREQ_COUNT Step 1
For sosi_num = SOSI_START To SOSI_START + SOSI_COUNT Step 1
For pulse_num = PHASE_START To PHASE_START + PHASE_COUNT Step 1
'直線化
If PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).PHS < 0 Then
PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).Linearise = PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).PHS + 360
Else
PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).Linearise = PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).PHS
End If
'位相[00]を0に正規化するため数値
If pulse_num = 0 Then
zero_base = PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).Linearise
End If
'正規化
PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).normalize = PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).Linearise - zero_base
'理想直線との誤差
PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).risou_gosa = PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).normalize - risou_phs(pulse_num)
'トータル(平均値算出のため)
risou_gosa_total = risou_gosa_total + PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).risou_gosa
Next
'平均値算出
DAT(freq_num, sosi_num, pulse_sel).risou_gosa_ave = risou_gosa_total / (PHASE_START + PHASE_COUNT + 1)
Next
Next
Next
Hensa_total = 0.0
'位相リニアリティ算出(Stdev関数の代用)
For pulse_sel = MEAS_START To MEAS_PHASE_COUNT Step 1
For freq_num = FREQ_START To FREQ_START + FREQ_COUNT Step 1
For sosi_num = SOSI_START To SOSI_START + SOSI_COUNT Step 1
For pulse_num = PHASE_START To PHASE_START + PHASE_COUNT Step 1
'偏差
DAT(freq_num, sosi_num, pulse_sel).Hensa = PassPulse(freq_num, sosi_num, pulse_num, pulse_sel).risou_gosa - DAT(freq_num, sosi_num, pulse_sel).risou_gosa_ave
Hensa_total = Hensa_total + (DAT(freq_num, sosi_num, pulse_sel).Hensa ^ 2)
Next
'分散
DAT(freq_num, sosi_num, pulse_sel).Bunsan = Hensa_total / (PHASE_START + PHASE_COUNT + 1)
'リニアリティ算出(標準偏差)
DAT(freq_num, sosi_num, pulse_sel).Linearity = Math.Sqrt(DAT(freq_num, sosi_num, pulse_sel).Bunsan)
Next
Next
Next