Matlab读取excel并使用拉依达准则筛选数据
生活随笔
收集整理的這篇文章主要介紹了
Matlab读取excel并使用拉依达准则筛选数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、Matlab讀取Excel表格
版本:matlab R2020a,Excel2019的xlsx格式文件
1.1 導入數據
1.2 選擇并打開要導入的.xlsx文件
1.3 選擇數據區域,選擇輸出到matlab工作區的數據類型
默認剛導入時自動選擇了所有數據區域(不帶title的)
這里以輸出為二維矩陣為例
1.4 導入成功,在工作區域命名變量名并在命令行測試輸出
1.5 使用命令導入,效果一樣
mat= xlsread('附錄1 目標客戶體驗數據.xlsx','sheet1','A2:AB1961')2、使用拉依達準則對數據進行篩選
2.1 什么是拉依達準則?
拉依達準則是指先假設一組檢測數據只含有隨機誤差,對其進行計算處理得到標準偏差,按一定概率確定一個區間,認為凡超過這個區間的誤差,就不屬于隨機誤差而是粗大誤差,含有該誤差的數據應予以剔除。這種判別處理原理及方法僅局限于對正態或近似正態分布的樣本數據處理,它是以測量次數充分大為前提的。
所以也叫3σ3\sigma3σ準則。
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來替代待剔除的值elsecontinue;endend end不符合條件的數值均用-1標記,然后對這些數據所在行進行刪除即可。
附:用matlab實現對Excel交互的鏈接https://blog.csdn.net/qq_43157190/article/details/99683635
總結
以上是生活随笔為你收集整理的Matlab读取excel并使用拉依达准则筛选数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html如何让div一条边斜着,CSS3
- 下一篇: selenium+Java同时开启多个浏