一行代码分组研华PCI-1711采集卡模拟量waveform数据
1、数据分组
简单说一下,假设需要采集3个传感器数据,每个传感器数据长度是2,waveform模式下采集的模拟量格式是{sensor1,sensor2,sensor3,sensor1,sensor2,sensor3,}
这样的一个数组不利于我们运算,这时需要将数组里的每个数据分3组
=>
{sensor1,sensor1}
{sensor2,sensor2}
{sensor3,sensor3}
下图是格式说明
代码:
string[] strs = { "sensor1", "sensor2", "sensor3", "sensor1", "sensor2", "sensor3" }; int i = 0; int j = -(3);//组数 var query = from s in strs let num = (i / j * -j) + (++i) group s by num into g select g.ToArray();
思路说明:先创建(let)一个数组,格式{1,2,3,1,2,3},再通过这个数组分组
运行结果如下: 通过ozcode插件可清楚看到linq执行流程
2、求众数
int[] numbers = { 1, 2, 3, 1, 2 }; var mostPresent1 = numbers.Distinct().Where(i => numbers.Count(j => j == i) == numbers.Distinct().Max(k => numbers.Count(l => l == k)));
思路:
先去掉重复的=》{1,2,3}
在分别判断1,2,3在数组的出现次数=》{2,2,1}----- 即1出现的2次,2出现了1次,3出现了1次
在判断{2,2,1}的最大值=》2 -----出现2次的数为众数
在从原数组中找出现2次的数=》{1,2}
最后找到众数2个
吾生也有涯,而知也无涯,以有涯随无涯,殆已。