电子测量第二章误差处理GUI

电子测量第二章误差处理GUI

一.要求:
用c++或MATLAB设计测量数据误差处理的通用程序

(1)提供测试数据输入、粗大误差判别准则选择等的人机界面

(2)编写程序使用说明

(3)通过实验来验证程序的正确性

程序说明:1.首先请打开wccl.m文件(命名为误差处理)
2.然后点击运行。
3.接着在GUI输入要测试的数据
%例2-2-6的数据
2.72 2.75 2.65 2.71 2.62 2.45 2.62 2.70 2.67 2.73 2.74

4.点击‘确定’得到均值和标准偏差
5.选择粗大误差处理方法。莱特检验法适用于10个以上的数据;肖维纳检验法适用于5个以上的数据;格拉布斯可以选择两种置信概率95%和99%;
6.然后点击‘启动查找’需要剔除的数据,如果得到数据,就点击‘清空’按钮,再点击‘剔除坏值后重新计算’,得到剔除坏值后的数组的均值和标准偏差,进行第5步,继续,直到点击‘启动查找’后的文本框的内容为‘Not’;
7.点击马利科夫和阿卑-赫梅特的按钮,判断系统是否有累进性系统误差和周期性系统误差;
8.点击想要的t分布的双侧置信概率95%和99%(这里只设置了两个概率,设置表n的个数不大于20个);

1.界面的GUI控制台
电子测量第二章误差处理GUI
下图为例2-2-6的数据第一次用格拉布斯准则运行的结果,显示是有粗大误差的,并且找到了坏值。
电子测量第二章误差处理GUI
剔除坏值后的数据来判断是否有系统变值误差,以及给出它的置信区间。结果显示是无变值误差,置信区间为[2.66,2.72]

电子测量第二章误差处理GUI

下面是部分代码:
%莱特检验法
set(handles.radiobutton1,‘value’,1);

set(handles.radiobutton2,‘value’,0);

set(handles.radiobutton3,‘value’,0);
global data
global V
global stdev
if max(V)>3*stdev
set(handles.edit4,‘string’,‘yes’)
else set(handles.edit4,‘string’,‘no’)
end

%检验数据 2.72 2.75 2.65 2.71 2.62 2.45 2.62 2.70 2.67 2.73 2.74
global data
global V
global stdev
input=get(handles.edit1,‘string’);
data=str2num(input);
ave=sum(data)/length(data);
set(handles.edit2,‘string’,ave); %输出期望
V=abs(data-ave)
m=sumsqr(V);
stdev=sqrt(m/(length(data)-1));
set(handles.edit3,‘string’,stdev); %输出标准偏差
str=get(handles.edit4,‘string’);
switch str
case ‘yes’
[m,p]=max(V);
set(handles.edit5,‘string’,data§);
case ‘no’
set(handles.edit5,‘string’,‘Not’);
end

%马利科夫判据
global data
global V
global stdev
L=length(data);
ave=sum(data)/L;
Vn=data-ave;
if mod(L,2)==0
if abs(sum(Vn(1:L/2))-sum(Vn(L/2+1:L)))>=max(V)
set(handles.edit6,‘string’,‘yes’);
else set(handles.edit6,‘string’,‘no’);
end
else if abs(sum(Vn(1:(L-1)/2))-sum(Vn((L+1)/2:L)))>=max(V)
set set(handles.edit6,‘string’,‘yes’);
else set(handles.edit6,‘string’,‘no’);
end
end

源代码及fig文件链接:https://pan.baidu.com/s/1gAhfCBtyT4rGX3AleIuVA
提取码:bv69
复制这段内容后打开百度网盘手机App,操作更方便哦