从几个log文件中读出几组数据,不同文件中每组数据含有相同类型(内容)的列。比如列1是WiFi无线设备中的RSSI,而列2是相对应的传输率等等:
文件1是一个牌子的测试得到的数据:
(列1)-50, (列2)5.8,(列3)78,...
(列1)-39, (列2)7.6,(列3)32,...
(列1)-48, (列2)5.2,(列3)69,...
(列1)-50, (列2)6.0,(列3)47,...
...
文件2是另一个牌子的测试得到的数据:
(列1)-30, (列2)5.8,(列3)46,...
(列1)-37, (列2)4.6,(列3)51,...
(列1)-42, (列2)4.9,(列3)64,...
(列1)-49, (列2)3.8,(列3)38,...
(列1)-50, (列2)2.8,(列3)31,...
...
单独打开其中一个文件,比如文件一,任意取2个列,(列1)做X轴,(列2)做Y轴,用OWC可以做出一个散点图。(同一个X值对应了几个不同的数值)
| *********
| ******** *
| *** *****
| * ** *
| ** *
| *
|———————————————————— X
我需要进行不同文件之间的比较,用文件一的列一和文件二的列一作为X轴,可以用每个数字作为一个单元格(-1,-2, 到-99),而用他们的列2作为Y轴的值,画出2条线型图,这样就可以比较2次log的某一列。比如绿色是文件一中对应X的第2列计算出来的平均值,而红色为文件二中对应相同的X的第2列计算出来的平均值。
| * ********* (文件一 列2)
| *
| * * ****
| * * * ********* (文件二 列2)
| * *
| *
|———————————————————— X
问题是:log 文件中的数组不是有序的。作为X轴的(列一)每个点有不同的(列二)值。而且也不是连续的。有些单元格可能没有值。但需要一个数字不能为空。需要把2个文件的X轴作统一,然后计算出每个点相对应的单个文件中的几个值的平均值,才有可能画出一个线型图。也就是说,一个X的单元格对应一个Y轴的值的一个数组。
程序用C#.net 开发。主要想请教高手用什么方式找出基于(列1)的(列2)的平均值。
非常感谢!
补充一句,我使用OWC在界面画图,需要的数组格式要连续的字符串“5.6,3.5,8.0,6.8,3..."
先用 Dictinary 对两个文件中所有的X轴数据进行整合,将X相同的合并到一个数组中,然后将Dictionary 中的Key(即X值)全部取出进行排序,得到排序后的X序列,然后再对每个X对于的Y(即Dictionary 的Value ,应该是一个Y的数组)进行排序,最后绘图
基本思路正如楼上所说,但是Dictinary得值需要一个KeyValuePaire
这样可以在KeyValuePaire里保存列2的值的总和和出现的次数
这样就可以用KeyValuePaire的key除以value得到平均值了
呵呵,麻烦,需要代码的话下次奉上,今天要下班了就不贴了。
采用SortedList,实现IComparer接口,进行排序