时间:2022-02-16 10:45:27 | 栏目:Python代码 | 点击:次
版本:matlab R2020a,Excel2019的xlsx格式文件
默认刚导入时自动选择了所有数据区域(不带title的)
这里以输出为二维矩阵为例
mat= xlsread('附录1 目标客户体验数据.xlsx','sheet1','A2:AB1961')
拉依达准则是指先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。这种判别处理原理及方法仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提的。
所以也叫 3 σ 3\sigma 3σ准则。
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://www.jb51.net/article/219448.htm