matlab 粗大误差
时间: 2023-10-12 12:05:17 浏览: 198
在Matlab中,可以使用拉依达准则(Leverage Criterion)来检测和处理粗大误差。根据拉依达准则,我们假设一组检测数据只包含随机误差,并通过计算处理得到标准偏差。然后根据一定的概率确定一个区间,超过这个区间的误差被认为不属于随机误差,而是粗大误差,应该予以剔除。实际操作时,可以按以下步骤进行:
1. 读取待处理的数据,可以使用`xlsread`函数读取Excel文件中的数据。
2. 使用`lillietest`函数判断数据是否符合正态分布,如果p值小于0.05,则拒绝正态分布假设。
3. 计算数据的均值和标准偏差,可以使用`mean`和`std`函数。
4. 根据拉依达准则,将超过3倍标准偏差的数据替换为均值或其他值,可以使用循环和条件语句实现。
5. 绘制剔除粗大误差后的数据图,可以使用`plot`函数。
下面是一个示例的Matlab代码,用于检测和处理粗大误差:
```matlab
a = xlsread('附件一:已结束项目任务数据.xls',1,'B2:B836'); % 读取数据
[h, p = lillietest(a); % 判断数据是否符合正态分布
subplot(2,1,1);
plot(a);
aa = mean(a);
sig = std(a);
m = zeros(1,length(a));
i = 1;
for t = 1:length(a)
m(t) = abs(a(t) - aa);
if m(t) > 3 * sig
n(t) = aa; % 替换异常值为均值
num(i) = a(t); % 记录异常数据
i = i + 1;
else
n(t) = a(t);
end
end
b = 0:1:length(n)-1;
subplot(2,1,2);
plot(b,n);
title('拉依达法则剔除粗大误差');
xlabel('采样时间');
ylabel('采样点数');
```
这段代码会读取Excel文件中的数据,然后判断数据是否符合正态分布。然后,根据拉依达准则,将超过3倍标准偏差的数据替换为均值,并绘制剔除粗大误差后的数据图。请注意,这只是一个示例,具体的处理方法和参数设置可能需要根据实际情况进行调整和改进。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [拉依达准则--(3σ准则)Matlab实现](https://blog.csdn.net/qq_44759750/article/details/98626455)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [Matlab实现通过拉依达准则与格拉布斯准则对测量误差样本进行检验,剔除粗大误差](https://download.csdn.net/download/weixin_45871994/12416273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文