02-10-2020 01:26 AM
Hi. I need some help with an script. I am doing 360° with a pattern(+1° ; -0.5 °; +1° ...) and the frequency is 1.6 kHz. I want to do an arithmetic mean on every 4000 Hz samples and to store the values in another channel. I have attached a graph with how the data looks like. Regards
Solved! Go to Solution.
02-10-2020 12:51 PM
Option Explicit 'Forces the explicit declaration of all the variables in a script.
'''''''''''''''''''''''''''''''''''''''''''''' * GENERATE FAKE DATA - START * ''''''''''''''''''''''''''''''''''''''''''''''
Call Data.Root.Clear()
Data.Root.Name = "Example"
Dim DataGrp, DataChnl, i, j
Set DataGrp = Data.Root.ChannelGroups.Add("Data")
Set DataChnl = DataGrp.Channels.Add("360", DataTypeChnFloat64)
DataChnl.Values(1) = 0
For i = 0 To 999999 Step 1
If DataChnl.Values(DataChnl.Size) >= 360 Then
Exit For
Else
For j = 1 To 1600 Step 1
DataChnl.Values(DataChnl.Size + 1) = DataChnl.Values(DataChnl.Size) + 0.000625
Next
For j = 1 To 800 Step 1
DataChnl.Values(DataChnl.Size + 1) = DataChnl.Values(DataChnl.Size)
Next
For j = 1 To 800 Step 1
DataChnl.Values(DataChnl.Size + 1) = DataChnl.Values(DataChnl.Size) - 0.0003125
Next
For j = 1 To 800 Step 1
DataChnl.Values(DataChnl.Size + 1) = DataChnl.Values(DataChnl.Size)
Next
End If
Next
'''''''''''''''''''''''''''''''''''''''''''''' * GENERATE FAKE DATA - END * ''''''''''''''''''''''''''''''''''''''''''''''
' Generate the mean channel
For i = 1 To DataChnl.Size Step 4000
Call ChnStatisticsChannelCalc("" & DataGrp.Name & "/" & DataChnl.Name, 32, i, i + 4000, False, True, False, "NameName")
If DataGrp.Channels.Exists("ArithmeticMean1") Then
DataGrp.Channels("ArithmeticMean").Values(DataGrp.Channels("ArithmeticMean").Size + 1) = DataGrp.Channels("ArithmeticMean1").Values(1)
Call DataGrp.Channels.Remove("ArithmeticMean1")
End If
Next
02-11-2020 01:44 AM
Thanks a lot @gsklyr. Its doing exactly what I need it. Best regards