电子测量技术-设计测量数据误差处理的通用程序
要求:
用c++或MATLAB设计测量数据误差处理的通用程序
(1)提供测试数据输入、粗大误差判别准则选择等的人机界面
(2)编写程序使用说明
(3)通过实验来验证程序的正确性
需要注意的是每一轮只能剔除残差绝对值最大的数据( ̄▽ ̄)"
分析:
1)人机界面可以用MATLAB的GUI功能实现,数据用表格uitalbe输入,功能用按钮button实现,置信度用弹出式菜单popupmenu实现。
2)每一轮检验至多剔除一个残差绝对值最大的数据,所以需要在外面再嵌套一个与数据组数相同的for循环用于保证可以剔除所有坏值,没剔除一个坏值后,数据数tempn要减一以防止矩阵索引超出维度。
3)若数据组数不足以使用一种检验法,用errordlg警告功能来提示不能使用该方法,用全局变量n让一组数据的组数检验是否符合多种方法的要求。
4)若剔除了坏值,用提示框提示第x组数据是第y个坏值,便于观察。需要用到num2str数字转字符功能
5)差值剔除后将剩下的数据和残差值输出在另一个表格中,用set语句实现输出,用两个表避免数据属性改变后另一种方法无法读取原数据的错误。
6)对于格拉布斯检验法,用弹出式菜单选择置信度,提前存好两种置信度对应的参数矩阵,将置信度传递到按钮,用if语句判断置信度从而决定选择哪个参数矩阵。
测试:
1) 测试1:
①莱特检验法
②肖维纳检验法
③格拉布斯检验法
测试2:
用莱特检验法,先剔除了残差较大的第7个数据,再剔除了残差较小但仍是坏值的第10个数据。
测试3:
用肖维纳检验法,先剔除了残差较大的第7个数据,再剔除了残差较小但仍是坏值的第5个数据。
测试4:
用格拉布斯检验法,置信度为95%时
置信度为99%时
总结:
坏值第一轮比较时我给temp设置了一个很小的数字来确可以保记录第一个坏值,似乎不是非常合理,或许还需要加个绝对值?
****下载资源里搜索电子测量-数据误差处理,有源代码,大家可以参考
编程菜鸟,如果有什么不足之处请大家轻喷( ̄▽ ̄)"
参考资料:
https://blog.****.net/l742745426/article/details/51259977
https://blog.****.net/smf0504/article/details/51814375
https://blog.****.net/GitChat/article/details/78546892
https://baijiahao.baidu.com/s?id=1594283167795567564&wfr=spider&for=pc
https://www.cnblogs.com/boyiliushui/p/7745262.html#_label5
http://www.ilovematlab.cn/thread-46072-1-1.html