资源简介
matlab编写的去除粗大误差的程序,输入含有粗大误差的数据,输出剔除粗大误差的数据和粗大误差在原数据中的序号,注释清晰,程序很容易看懂。
代码片段和文件信息
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 以下为测试3sigma法去除粗大误差的代码
% 使用时,将其拷贝到命令窗口,回车执行即可
% clear
% clc
% X = ones(1 50);
% X(1) = 1.3;
% X(2) = 1.1;
% X(7) = 1.8;
% X(10) = 1.5;
% X(12) = 0.7;
% X(13) = 0.9;
% X(18) = 0.5;
% X(20) = 0.3;
% [dest index] = EliminateGrossErrors(X)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 去除粗大误差
function [dest index] = EliminateGrossErrors(src)
dest = src; % 去除粗大误差之后的数据
index = []; % 每次去除的数据编号
% 3sigma法则
while 1
y = dest - mean(dest); % 残差
s = sqrt(sum(y .^ 2) / (numel(y) - 1)); % 标准差
id = find(abs(y) > 3 * s); % 粗大误差序号
if isempty(id) % 判断是否还含有粗大误差
break;
else
if isempty(index)
- 上一篇:数字水印源代码
- 下一篇:数据加密标准DESmatlab程序
评论
共有 条评论