01-29-2005 08:52 AM
01-30-2005 12:46 AM
01-30-2005 05:10 AM
01-31-2005 01:57 PM
Private Sub GenerateDataToFit(ByVal numSamples As Integer, ByVal noiseAmplitude As Double, ByRef xData As Double(), ByRef yData As Double())
ReDim xData(numSamples - 1)
ReDim yData(numSamples - 1)
Dim noise As WhiteNoiseSignal = New WhiteNoiseSignal(noiseAmplitude, 0)
Dim noiseData As Double() = noise.Generate(numSamples, numSamples)
For x As Integer = 0 To xData.Length - 1
xData(x) = x
yData(x) = System.Math.Exp(-0.1 * x) + 2.0 + noiseData(x)
Next
End Sub
Private Sub OnCalculate(ByVal sender As Object, ByVal e As EventArgs) Handles calculateButton.Click
Dim numSamples As Integer = numberOfSamples.Value
Dim noiseAmplitude As Double = noiseLevel.Value
Dim xData As Double()
Dim yData As Double()
Dim coefficients As Double() = {2, 0, 4}
GenerateDataToFit(numSamples, noiseAmplitude, xData, yData)
scatteredDataPlot.PlotY(yData)
Dim mse As Double
Dim callback As ModelFunctionCallback = New ModelFunctionCallback(AddressOf ModelFunction)
Try
Dim fittedData As Double() = CurveFit.NonLinearFit(xData, yData, callback, coefficients, mse)
fitDataPlot.PlotY(fittedData)
Catch exp As Exception
MessageBox.Show(exp.Message)
End Try
End Sub
Private Function ModelFunction(ByVal x As Double, ByVal a As Double()) As Double
Return (a(0) * System.Math.Exp(a(1) * x)) + a(2)
End Function
02-01-2005 11:45 AM