1.工具
Matlab
2.代码流程简介
代码相对简单,基本就如下几个流程,且代码中都有较为详细的简介
3.代码展示
clear; clc; %清除
gauss=normrnd(1,2,1,1000); %产生1000个高斯随机数
Standard_Deviation=std(gauss); %数据标准差
Average_Value = mean(gauss); %计算算术平均均值,最佳估计值
Absolute_Value=abs(gauss-Average_Value); %计算绝对值
index=find(Absolute_Value>(3*Standard_Deviation));%判断粗大误差
if(isempty(index))
disp("本次无粗大误差。")
else
gauss(index)=[];
str=['粗大误差消除:',num2str(index)];
disp(str);
end
Standard_Deviation=std(gauss); %数据标准差
Average_Value = mean(gauss); %计算算术平均均值,最佳估计值
Absolute_Value=abs(gauss-Average_Value); %计算绝对值
n=length(gauss); %数据长度
if(Absolute_Value>= (3*Standard_Deviation))%判断是否还有粗大误差
disp("存在粗大误差为:")
disp(gauss(Absolute_Value>=3*Standard_Deviation))
disp("请手动去除!")
else
disp("不存在粗大误差")
end
Uncertainty_B =0.05/sqrt(3); %计算B类不确定度
Uncertainty_A = Standard_Deviation/ sqrt(n); %计算A类不确定度
Uncertainty = sqrt(Uncertainty_A^2+Uncertainty_B^2);%计算合成不确定度
disp("测量结果报告:")
str=['最佳估计值: ',num2str(Average_Value)];
disp(str);
str=['不确定度: ',num2str(Uncertainty)];
disp(str);
str=['自由度: ',num2str(n-1)];
disp(str);
4.结果展示
5.结尾
这个大作业题目相对简单,还是很感谢张海燕老师高抬贵手,为我混乱的期末 减轻了一点点负担,虽然做的也不咋样。
本代码基本完成了数据处理的流程,但对于扩展不确定度,由于想不出怎么算出置信概率和t就直接跳过了,还有将异常数据就当剔除粗大误差时一起剔除。