Matlab读取excel并使用拉依达准则筛选数据

1、Matlab读取Excel表格

版本:matlab R2020a,Excel2019的xlsx格式文件

1.1 导入数据

Matlab读取excel并使用拉依达准则筛选数据

; 1.2 选择并打开要导入的.xlsx文件

Matlab读取excel并使用拉依达准则筛选数据

1.3 选择数据区域,选择输出到matlab工作区的数据类型

Matlab读取excel并使用拉依达准则筛选数据
默认刚导入时自动选择了所有数据区域(不带title的)
这里以输出为二维矩阵为例

; 1.4 导入成功,在工作区域命名变量名并在命令行测试输出

Matlab读取excel并使用拉依达准则筛选数据

1.5 使用命令导入,效果一样

mat= xlsread('附录1 目标客户体验数据.xlsx','sheet1','A2:AB1961')

2、使用拉依达准则对数据进行筛选

2.1 什么是拉依达准则?

拉依达准则是指先假设 一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。这种判别处理原理及方法 仅局限于对正态或近似正态分布的样本数据处理,它是 以测量次数充分大为前提的。

Matlab读取excel并使用拉依达准则筛选数据

; 2.2 根据拉依达准则用matlab对数据进行异常值筛选

clear
clc
%% 根据拉依达准则对二维数据进行筛选
mat= xlsread('附录1 目标客户体验数据.xlsx','data','A2:AB1961'); %读取数据
% ave_all=[];
% sigma_all=[];
sizes=size(mat);
for j=1:sizes(2)
    ave(j) = mean(mat(:,j));%mean 求解平均值
    %ave_all=[ave_all,ave(j)];
    sigma(j) = std(mat(:,j));%求解标准差
    %sigma_all=[sigma_all,sigma(j)];
    for i = 1:sizes(1)
        if(abs(mat(i,j)-ave(j))>3*sigma(j));%不符合3σ准则,标记这个元素位置
            disp(['第',num2str(i),'行','第',num2str(j),'列,出现不满足拉依达准则的数据,数据id为:'])
            data_id=mat(i,1) %%如果以actxserver读取的话,这里可以设置excel中单元格格式
            mat(i,j)=-1;%% 这里用数据中没出现过的-1来替代待剔除的值
        else
            continue;
        end
    end
end

不符合条件的数值均用-1标记,然后对这些数据所在行进行删除即可。

附:用matlab实现对Excel交互的链接https://blog.csdn.net/qq_43157190/article/details/99683635

Original: https://blog.csdn.net/weixin_42160117/article/details/119460875
Author: 2realworld
Title: Matlab读取excel并使用拉依达准则筛选数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599772/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球