VB代码转成C或者C++,高人帮忙
这是一个模块中的代码
====================
Public datab() As Double '标准吸收数据
Public datay() As Double '样品吸收数据
Public ypshu As Double '样品数
Public zfshu As Integer '组分数
Public lengthsum As Integer '波长点数
Public r As Double '噪声方差
Public alpha As Integer '计算机精度常数
Public guesserr() As Double '估计误差的协方差矩阵
Public nongdu() As Double '浓度估计矩阵
Public king() As Double '增益矩阵
Public paiwei As Integer '第几个样品
Public q() As Double
Public hh() As Double
Public Sub kalman()
ReDim guesserr(0 To zfshu - 1, 0 To zfshu - 1) As Double
ReDim nongdu(0 To zfshu - 1) As Double
ReDim king(0 To zfshu - 1) As Double
For i0 = 0 To zfshu - 1
For i1 = 0 To zfshu - 1
guesserr(i0, i1) = 0
Next
nongdu(i0) = 0
guesserr(i0, i0) = (alpha * Sqr(r / (datab(1, i0) ^ 2))) ^ 2
Next i0
For i0 = 0 To lengthsum - 1
For i1 = 0 To zfshu - 1
king(i1) = 0
For i2 = 0 To zfshu - 1
king(i1) = datab(i0, i2) * guesserr(i1, i2) + king(i1)
Next
Next
z0 = 0
For i1 = 0 To zfshu - 1
z0 = z0 + king(i1) * datab(i0, i1)
Next
z0 = z0 + r
z1 = 0
For i1 = 0 To zfshu - 1
king(i1) = king(i1) / z0
z1 = z1 + datab(i0, i1) * nongdu(i1)
Next
z1 = datay(i0, paiwei) - z1
For i1 = 0 To zfshu - 1
nongdu(i1) = nongdu(i1) + king(i1) * z1
Next
ReDim q(0 To zfshu, 0 To zfshu)
For i1 = 0 To zfshu - 1
For i2 = 0 To zfshu - 1
q(i1, i2) = -king(i1) * datab(i0, i2)
Next
q(i1, i1) = 1 + q(i1, i1)
Next
ReDim hh(0 To zfshu - 1, 0 To zfshu - 1) As Double
For i1 = 0 To zfshu - 1
For i2 = 0 To zfshu - 1
hh(i1, i2) = 0
For i3 = 0 To zfshu - 1
hh(i1, i2) = q(i1, i3) * guesserr(i3, i2) + hh(i1, i2)
Next
Next
Next
For i1 = 0 To zfshu - 1
For i2 = 0 To zfshu - 1
guesserr(i1, i2) = 0
For i3 = 0 To zfshu - 1
guesserr(i1, i2) = guesserr(i1, i2) + hh(i1, i3) * q(i2, i3)
Next
guesserr(i1, i2) = guesserr(i1, i2) + r * king(i1) * king(i2)
Next
Next
For i = 0 To zfshu - 1
Debug.Print nongdu(i),
Next
Debug.Print
Next
End Sub