急啊~~~~vb求平均值啊!!!!跪求高手帮助啊~~~~

lujiahu123 2007-08-21 08:11:46
我用的数据采集卡,数据存储是这样求平均值的(一边采集一边算平均值放在Excel表中的):取了第一个数放在excel的固定单元格中,取第二个数时把采集两个数的平均值还放回到刚才的单元格中,第三,第四如此类推,我要取100个数, 我虽然求出平均值,但稳定性不要,我要在这100个数中去掉10个最大值,10个最小值,就乘下80个数据的平均值,请问高手该怎么办啊???????
...全文
1228 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2007-08-22
  • 打赏
  • 举报
回复
不好意思,应该用 a(j) = a(j mod (i+1))

不知道你采集的次序如何:
如果是采集完一个通道(100个值)再处理下一个通道,只要在 for i=0 to 99 外面再套一个按通道的循环;
如果是所有通道取完第一个值再处理下个值,如下修改:
Type data
a(100 - 1) As Long
End Type

Sub Main()
Dim channels(32 - 1) As data
Dim i As Long, j As Long, c As Long
For i = 0 To 99
For c = 0 To 31
channels(c).a(i) = 采集数据(c)
For j = i + 1 To 99 '用以采集的数循环填充满 100 个成员
channels(c).a(j) = channels(c).a(j Mod (i + 1))
Next
cell("R1C" & c) = Avg(channels(c).a)
Next
Next
End Sub

排序过程随便用冒泡或快排之类的算法,唯一区别是先复制数组作为结果已保证已采样值位置不变。
of123 2007-08-22
  • 打赏
  • 举报
回复
这样做:
1 排序采用 ListBox 控件,设置成 Visual = False, Sorted = True。
2 将你轮询得到的数据顺序存放一个数组中。

Dim a(1 To 3200) As Long, i As Integer, j As Integer
Dim sum As Double, avg(1 To 32) As Double

For i = 1 To 32
List1.Clear
For j = i To 3200 Step 32
List1.AddItem Right("0000000" & Hex(a(j)), 8)
Next j
sum = 0
For j = 10 To 89
sum = sum + Val("&H" & List1.List(j))
Next j
avg(i) = sum / 80
Next i
zzyong00 2007-08-22
  • 打赏
  • 举报
回复
a(j) = a(j mod i) 'i=0时,不会出错吗?
lujiahu123 2007-08-22
  • 打赏
  • 举报
回复
还有谁能帮帮我吗?
lujiahu123 2007-08-22
  • 打赏
  • 举报
回复
谢谢各位!
Tiger_Zhao 2007-08-21
  • 打赏
  • 举报
回复
dim a(100-1) as long
dim i as long, j as long
for i=0 to 99
a(i) = 采集数据
for j=i+1 to 99 '用以采集的数循环填充满 100 个成员
a(j) = a(j mod i)
next
cell("A1") = AVG(a)
next

function AVG(a() as long) as double
dim b() as long
dim i as long
dim sum as long
b = sort(a) '复制一个数组并排序
for i= 20 to 79
sum = sum + b(i)
next
avg = sum / 80
end function
guyehanxinlei 2007-08-21
  • 打赏
  • 举报
回复
将一百个数全部取出来去掉十个最大值与十个最小值后再算平均值,取两个算出平均值再与后数算,感觉不是很妥当,建议一下。
lujiahu123 2007-08-21
  • 打赏
  • 举报
回复
再请问我如采集多通道(比如32通道)的数据,那一个一维数据就不行了,就要建一个二维动态数组了,(就是一行是一个通道采集的100个数据),那怎样进行排序,并把每一行求出来的平均数保存到对应的Excel表中,再请你帮忙一下啊~~~~~~谢了!!!!!
lujiahu123 2007-08-21
  • 打赏
  • 举报
回复
你提供的方法很好,我正在试看能不能调试出来.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧