国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)預(yù)處理matlab

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)預(yù)處理matlab。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

matlab數(shù)據(jù)的獲取、預(yù)處理、統(tǒng)計(jì)、可視化、降維

數(shù)據(jù)的預(yù)處理 - MATLAB & Simulink - MathWorks 中國https://ww2.mathworks.cn/help/matlab/preprocessing-data.html

一、數(shù)據(jù)的獲取

1.1 從Excel中獲取

使用readtable()

例1:

使用spreadsheetImportOptions(Name,Value)初步確定導(dǎo)入信息,

再用opts.Name=Value的格式添加。

%    工作簿: C:\Users\Hao\Desktop\程序_MATLAB數(shù)學(xué)建模方法與實(shí)踐_卓金武等\Cha2\sz000004.xls
%    工作表: Sheet1
 
%% 設(shè)置導(dǎo)入選項(xiàng)并導(dǎo)入數(shù)據(jù)
opts = spreadsheetImportOptions("NumVariables", 8);%變量數(shù)8
%spreadsheetImportOptions允許指定 MATLAB? 如何從電子表格文件中導(dǎo)入表格數(shù)據(jù)
 
% 指定工作表和范圍
opts.Sheet = "Sheet1";
opts.DataRange = "A1:H45";
 
% 指定列名稱和類型
opts.VariableNames = ["Date", "DateNum", "Popen", "Phigh", "Plow", "Pclose", "Volum", "Turn"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double"];
 
% 導(dǎo)入數(shù)據(jù)
sz000004 = readtable("C:\Users\Hao\Desktop\程序_MATLAB數(shù)學(xué)建模方法與實(shí)踐_卓金武等\Cha2\sz000004.xls", opts, "UseExcel", false);
 
 
%% 清除臨時(shí)變量
clear opts

例2:

先初始化spreadsheetImportOptions對(duì)象,

再用opts.Name=Value的格式逐個(gè)添加。

% 初始化 SpreadsheetImportOptions 對(duì)象
opts = spreadsheetImportOptions; 
 
% 指定變量名稱
opts.VariableNames = 'LastName';
 
% 變量類型
opts.VariableTypes = 'categorical';
 
% 數(shù)據(jù)起始單元格
opts.DataRange = 'A2';
 
% 使用導(dǎo)入選項(xiàng)預(yù)覽文件中的八行數(shù)據(jù)
preview('patients.xls',opts)
oneVar = readtable('patients.xls',opts);
% 列出變量及大小和類型
whos oneVar

例3:

將導(dǎo)入信息存到變量里,

再使用spreadsheetImportOptions(Name,Value)添加導(dǎo)入信息。

% 變量數(shù)
numVars = 7;
% 變量名稱
varNames = {'LastName','Gender','Age','Location','Height','Weight','Smoker'} ;
% 變量類型
varTypes = {'char','categorical','int32','char','double','double','logical'} ;
% 數(shù)據(jù)起始單元格
dataStartLoc = 'A2';
 
% 使用 spreadsheetImportOptions 函數(shù)和變量信息初始化導(dǎo)入選項(xiàng)對(duì)象 opts
opts = spreadsheetImportOptions('NumVariables',numVars,...
                                'VariableNames',varNames,...
                                'VariableTypes',varTypes,...
                                'DataRange', dataStartLoc); 
 
% 使用導(dǎo)入選項(xiàng)預(yù)覽文件中的八行數(shù)據(jù)
preview('patients.xls',opts)
% 使用 readtable 導(dǎo)入數(shù)據(jù)
T = readtable('patients.xls',opts);
% 列出變量及大小和類型
whos T

注:readtable?僅支持下列名稱-值對(duì)組:

  1. 文本和電子表格參數(shù) -?ReadVariableNames、ReadRowNames

  2. 僅文本參數(shù) -?DateLocale、Encoding

  3. 僅電子表格參數(shù) -?Sheet、UseExcel

使用xlsread()——xlswrite()

a=xlsread('C:\Coporation_evaluation.xlsx',2,'A2:I16')

% 'C:\Coporation_evaluation.xlsx' 表示讀入Excel數(shù)據(jù)所在位置

% 2 表示位于sheet2

% 'A2:I16' 表示讀入的數(shù)據(jù)范圍


a=xlswrite('C:\Coporation_evaluation.xlsx',a,3,'B1:C5')

% 'C:\Coporation_evaluation.xlsx' 表示寫入Excel工作簿所在位置,若不存在會(huì)自動(dòng)創(chuàng)建

% a 表示待寫入的數(shù)據(jù)

% 3 表示sheet3

% 'B1:C5' 表示寫入Excel中的的具體位置

[data,textdata] = xlsread('D:\桌面\xx.xls'),讀取的是什么

  • 從文件路徑為 D:\桌面\xx.xls 的 Excel 文件中讀取數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到兩個(gè)變量 datatextdata 中。
  • 其中,xlsread() 是 MATLAB 內(nèi)置函數(shù),用于讀取 Excel 文件中的數(shù)據(jù)。
  • 第一個(gè)輸入?yún)?shù) 'D:\桌面\aa.xls' 表示了 Excel 文件的全路徑,可以根據(jù)實(shí)際情況修改該值。
  • 第二個(gè)參數(shù)為空,則函數(shù)默認(rèn)讀取所有數(shù)值型數(shù)據(jù);如果指定第二個(gè)輸出參數(shù)名稱(如此例中的 textdata),則函數(shù)會(huì)將 Excel 文件中的文本數(shù)據(jù)存儲(chǔ)到該變量中。

假設(shè)我們有一個(gè) Excel 文件,文件路徑為 D:\桌面\data.xlsx,它包含以下數(shù)據(jù):

A B C
1 10 20 a
2 30 40 b

那么,我們可以使用以下 MATLAB 代碼讀取該文件中的數(shù)值型和文本數(shù)據(jù):

[data, textdata] = xlsread('D:\桌面\data.xlsx');

執(zhí)行上述代碼后,MATLAB 會(huì)將該 Excel 文件中的數(shù)值型數(shù)據(jù)存儲(chǔ)到 data 變量中,文本數(shù)據(jù)存儲(chǔ)到 textdata 變量中。此時(shí)可以在 MATLAB 命令窗口中輸入這兩個(gè)變量名,查看其內(nèi)容:

data =

    10    20
    30    40

textdata =

  2×1 cell 數(shù)組

    {2×1 cell}
    {2×1 cell}

>> textdata{1}

ans =

    'a'

>> textdata{2}

ans =

    'b'
  • 可見,MATLAB 已經(jīng)成功地讀取了 Excel 文件中的數(shù)據(jù),并將其存儲(chǔ)到相應(yīng)的變量中。
  • 其中,textdata 變量是一個(gè) 2x1 的單元格數(shù)組,每個(gè)單元格中存儲(chǔ)了一列文本數(shù)據(jù)。
  • 我們可以使用花括號(hào) {} 來訪問單元格中的內(nèi)容,如 textdata{1} 訪問第一列的文本數(shù)據(jù)。

1.2? 從TXT中獲取

使用load()

% 生成線性間距向量,返回包含 1 和 30 之間的 8(默認(rèn)100)個(gè)等間距點(diǎn)的行向量

a=linspace(1,30,8);
save d:\exper.txt a -ascii;
b=load('d:\exper.txt')

% save d:\exper.txt a -ascii; 把a(bǔ)以ASCII碼的形式存儲(chǔ)在D盤的exper.txt中,若不存在會(huì)自動(dòng)創(chuàng)建

% b=load('d:\exper.txt') 讀取'd:\exper.txt'中的數(shù)據(jù),并儲(chǔ)存在變量b中

使用textread()

[A,B,C,...]=textread('filename','format',N,'headerlines',M)

% filename 表示txt文件名稱

% format 表示所讀取變量的字段格式

% N 表示讀取的次數(shù)

% headerlines 表示從第M+1行開始讀取

使用字面值讀取以忽略匹配的字符https://blog.csdn.net/jk_101/article/details/106495696

[name,type,x,y,answer]=textread('D:t.txt','%s Type%d %f %n %s',2,...
                                'headerlines',1)

% 格式Type%d只顯示%d,因?yàn)樵瓟?shù)據(jù)為Type1,Type2,Type3,Type4

例如:

mydata.dat 的第一行如下:

Sally    Type1 12.34 45 Yes

?讀取文件的第一行,并忽略第二個(gè)字段中的字符 Type。

[names, typenum, x, y, answer] = textread('mydata.dat', ...
'%s Type%d %f %d %s', 1)

返回

names = 
    'Sally'
typenum =
    1
x =
  12.34000000000000
y =
    45
answer = 
    'Yes'

使用fopen() fread() fclose()?

例:

讀取.m文件中的字符(讀取txt文件也可以)

% 用函數(shù)fopen打開文件,r代表只讀形式打開,w代表寫入形式打開,a代表在文件末尾添加內(nèi)容

fid=fopen('D:\CRM4.m','r'); % fid=fopen('D:\CRM4.m','w')/fid=fopen('D:\CRM4.m','a')

% 以字符形式讀取整個(gè)文本
var=fread(fid,'*char');

% 將中文字段轉(zhuǎn)換為相應(yīng)的2字節(jié)代碼,否則輸出可能會(huì)亂碼
var=native2unicode(var)
fclose(fid)

使用fprintf()寫入信息到txt

fprintf('file','format',a1,a2...)

% file 表示文件路徑

% format 表示數(shù)據(jù)寫入類型

% a 表示要寫入的數(shù)據(jù)內(nèi)容

1.3?從圖片中獲取

%% 讀取圖片
clc, clear, close all
a1=imread('000.bmp');
% 獲得像素矩陣行數(shù)列數(shù)
[m,n]=size(a1);
 
%% 批量讀取圖片
dirname = 'ImageChips'; % 'ImageChips'文件夾
 
files = dir(fullfile(dirname, '*.bmp'));

%% fuiifile用法
% f = fullfile('myfolder','mysubfolder','myfile.m')
% f = 'myfolder/mysubfolder/myfile.m'
%% dir用法
% dir name 列出與 name 匹配的文件和文件夾。如果 name 為文件夾,dir 列出該文件夾的內(nèi)容。使用絕對(duì)
% 或相對(duì)路徑名稱指定 name。name 參數(shù)的文件名可以包含 * 通配符,路徑名稱可以包含 * 和 ** 通配符。 
% 與** 通配符相鄰的字符必須為文件分隔符。
 
a=zeros(m,n,19); % 創(chuàng)建全零數(shù)組19個(gè)m*n數(shù)組,共19張圖片
pic=[];
for ii = 1:length(files)
  filename = fullfile(dirname, files(ii).name);
  a(:,:,ii)=imread(filename); % 將該圖片信息讀取到a的第ii個(gè)數(shù)組里
  pic=[pic,a(:,:,ii)]; % 拼接圖像
end
double(pic);
figure
imshow(pic,[])

% imshow(I,[low high]) 顯示灰度圖像 I,以二元素向量 [low high] 形式指定顯示范圍

% 若為[],使用 [min(I(:)) max(I(:))] 的顯示范圍。換句話說,I 中的最小值是黑色,最大值是白色

1.4 從視頻獲取?

使用視覺工具箱中的VideoFileReader?

%% 讀取視頻數(shù)據(jù)
% 從視頻文件中讀取視頻幀、圖像和音頻樣本

videoFReader = vision.VideoFileReader('vippedtracking.mp4');
% 播放視頻文件
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
% 當(dāng)來自有限數(shù)據(jù)源的數(shù)據(jù)取完時(shí)(通常是因?yàn)橐炎x取所有數(shù)據(jù)),isDone(obj)返回true
% ~邏輯非
  videoFrame = step(videoFReader); % 運(yùn)行videoFReader算法,返回輸出參數(shù)
  step(videoPlayer, videoFrame); % 對(duì)videoFrame運(yùn)行videoPlayer算法
end
release(videoPlayer); %釋放資源
 
%% 設(shè)置播放方式
% 重置播放器

reset(videoFReader) % 將圖形對(duì)象屬性重置為其默認(rèn)值
% 增加播放器的尺寸
r = groot; % r = groot 用于存儲(chǔ)圖形根對(duì)象的句柄。要使用圓點(diǎn)表示法設(shè)置根屬性,首先必須存儲(chǔ)句柄
scrPos = r.ScreenSize;
%  Size/position is always a 4-element vector: [x0 y0 dx dy]
dx = scrPos(3); dy = scrPos(4);
videoPlayer = vision.VideoPlayer('Position',[dx/8, dy/8, dx*(3/4), dy*(3/4)]);
% 指定左下角和右上角的坐標(biāo)
while ~isDone(videoFReader)
  videoFrame = step(videoFReader);
  step(videoPlayer, videoFrame);
end
release(videoPlayer);
reset(videoFReader)
 
%% 獲取視頻中的圖像
videoFrame = step(videoFReader);
n = 0;
while n~=15
  videoFrame = step(videoFReader);
  n = n+1;
end
figure, imshow(videoFrame) % 獲得第15張圖像
release(videoPlayer);

Matlab中fopen函數(shù)用法https://blog.csdn.net/jk_101/article/details/106494232

二、數(shù)據(jù)的預(yù)處理

數(shù)據(jù)質(zhì)量三要素:準(zhǔn)確性、完整性、一致性(格式不一致等)

兩個(gè)影響因素:可信性(多少是用戶信賴的)、可解釋性 (是否容易理解)

數(shù)據(jù)類型的轉(zhuǎn)換https://zhuanlan.zhihu.com/p/217597511?

缺失值處理:

一般可刪除記錄、數(shù)據(jù)插補(bǔ)和不處理。https://blog.csdn.net/yunlinzi/article/details/90300113

可插補(bǔ)方法 方法描述
均值/中位數(shù)/眾數(shù)插補(bǔ)

根據(jù)屬性值的類型,

用該屬性取值的平均數(shù)/中位數(shù)/眾數(shù)進(jìn)行插補(bǔ)。

使用固定值

將缺失的屬性值用一個(gè)常量替換。

如廣州一個(gè)工廠普通外來務(wù)工人員的“基本工資”屬性的空缺值,

可以用2015年廣州市普通外來務(wù)工人員工資標(biāo)準(zhǔn)1895元月,

該方法就是使用固定值。

最近臨插補(bǔ) 在記錄中找到與缺失樣本最接近的樣本的該屬性值插補(bǔ)
回歸方法

對(duì)帶有缺失值的變量,根據(jù)已有數(shù)據(jù)和與其有關(guān)的其他變量(因變量)的數(shù)據(jù)建立擬合模型來預(yù)測缺失的屬性值。

插值法

插值法是利用已知點(diǎn)建立合適的插值函數(shù)f(x),

未知值由對(duì)應(yīng)點(diǎn)求出的函數(shù)值f(x,)近似代替。

插值與擬合

插值與擬合的區(qū)別和聯(lián)系

1、聯(lián)系

??? 都是根據(jù)實(shí)際中一組已知數(shù)據(jù)來構(gòu)造一個(gè)能夠反映數(shù)據(jù)變化規(guī)律的近似函數(shù)的方法。

2、區(qū)別

??? 插值問題不一定得到近似函數(shù)的表達(dá)形式,僅通過插值方法找到未知點(diǎn)對(duì)應(yīng)的值。

數(shù)據(jù)擬合要求得到一個(gè)具體的近似函數(shù)的表達(dá)式。

插值方法

????????選用不同類型的插值函數(shù),逼近的效果就不同,一般有:

1)最近鄰算法插值(一維插值)

2)拉格朗日插值算法(一維插值)

3)雙線性內(nèi)插算法(二維插值)

4)分段線性插值(二維插值)

5)三次樣條插值(二維插值)

6)克里金插值(地理學(xué))

7)反距離權(quán)重插值算法(地理學(xué))

  • Matlab?實(shí)現(xiàn):實(shí)現(xiàn)分段線性插值不需要編制函數(shù)程序,它自身提供了內(nèi)部的功能函數(shù)https://blog.csdn.net/qq_36666756/article/details/81983385
  • interp1(一維插值)
  • interp2(二維)
  • interp3(三維)
  • intern(n)

例:從1點(diǎn)12點(diǎn)11小時(shí)內(nèi),每隔1小時(shí)測量一次溫度,測得的溫度的數(shù)值依次為:5,8,915,2529,31,3022,25,27,24.試估計(jì)每隔1/10小時(shí)的溫度值.

hours=1:12;

temps=[5 8 9 15 25 29 31 30 22 25 27 24];

h=1:0.1:12;

t=interp1(hours,temps,h,'spline');

plot(hours,temps,'+',h,t,hours,temps,'r:')     %作圖

xlabel('Hour'),ylabel('Degrees Celsius’)
%1.先在三維坐標(biāo)畫出原始數(shù)據(jù),畫出粗糙的溫度分布曲線圖.

%輸入以下命令:

x=1:5;
y=1:3;
temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
mesh(x,y,temps)

%2.以平滑數(shù)據(jù),在 x、y方向上每隔0.2個(gè)單位的地方進(jìn)行插值.

再輸入以下命令:
xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi',yi,'cubic');
mesh(xi,yi,zi)

%畫出插值后的溫度分布曲面圖.

例 在某海域測得一些點(diǎn)(x,y)處的水深z由下表給出,船的吃水深度為5英尺,在矩形區(qū)域(75,200×-50150)里的哪些地方船要避免進(jìn)入.?

%1.輸入插值基點(diǎn)數(shù)據(jù)  
%2.在矩形區(qū)域(75,200)×(-50,150)進(jìn)行插值。 
%3. 作海底曲面圖 
%4.作出水深小于5的海域范圍,即z=5的等高線

%程序一:插值并作海底曲面圖

x  =[129.0  140.0  103.5  88.0  185.5  195.0  105.5 157.5  107.5  77.0  81.0  162.0  162.0  117.5 ];

y =[ 7.5  141.5  23.0  147.0  22.5  137.5  85.5      -6.5  -81  3.0  56.5  -66.5  84.0  -33.5 ];

z =[ 4  8  6  8  6  8  8  9  9  8  8  9  4  9 ];

x1=75:1:200;

y1=-50:1:150;

[x1,y1]=meshgrid(x1,y1);

z1=griddata(x,y,z,x1,y1,'v4');

meshc(x1,y1,z1)


%程序二:插值并作出水深小于5的海域范圍。

x1=75:1:200;

y1=-50:1:150;

[x1,y1]=meshgrid(x1,y1);

z1=griddata(x,y,z,x1,y1,'v4');  %插值

z1(z1>=5)=nan;   %將水深大于5的置為nan,這樣繪圖就不會(huì)顯示出來

meshc(x1,y1,z1)


異常值處理:

  • 異常值是數(shù)據(jù)集中偏離大部分?jǐn)?shù)據(jù)的數(shù)據(jù)。
  • 從數(shù)據(jù)值上表現(xiàn)為:數(shù)據(jù)集中與平均值的偏差超過兩倍標(biāo)準(zhǔn)差的數(shù)據(jù),
  • 其中與平均值的偏差超過三倍標(biāo)準(zhǔn)差的數(shù)據(jù),稱為高度異常的異常值。

小波異常值提取

?????信號(hào)的突變點(diǎn)和奇異點(diǎn)等不規(guī)則部分通常包含重要信息,一般信號(hào)的奇異性分為兩種情況:

  1. ? ? 信號(hào)在某一時(shí)刻其幅值發(fā)生突變,引起信號(hào)的非連續(xù),這種類型的突變稱為第一類型的間斷點(diǎn);??
  2. ? ? 信號(hào)在外觀上很光滑,幅值沒有發(fā)生突變,但是信號(hào)的一階微分有突變發(fā)生且一階微分不連續(xù),這種類型的突變稱為第二類型的間斷點(diǎn)。
  3. ?????應(yīng)用小波分析可以檢測出信號(hào)中的突變點(diǎn)的位置、類型以及變化的幅度。

例:第一類型間斷點(diǎn)的檢測

  • 本例中,信號(hào)的不連續(xù)是由于低頻特征的正弦信號(hào)在后半部分突然有高頻特征的正弦信號(hào)加入,
  • 首先利用傅里葉變換分析對(duì)信號(hào)在頻域進(jìn)行分析,發(fā)現(xiàn)無檢測突變點(diǎn),
  • 接著利用小波分析進(jìn)行分析,結(jié)果證明它能夠準(zhǔn)確地檢測出了信號(hào)幅值突變的位置,即高頻信號(hào)加入的時(shí)間點(diǎn)。
load freqbrk;

x=freqbrk;%對(duì)信號(hào)進(jìn)行傅里葉變換

f=fft(x,1024);

f=abs(f);

figure;

subplot(211);
plot(x);

subplot(212);
plot(f);
  
%使用db6小波進(jìn)行6層

[c,l]=wavedec(x,6,’db6’);

figure(2);
subplot(811);
plot(x);
ylabel('x');
 
%對(duì)分解的第六層低頻系數(shù)進(jìn)行重構(gòu)

a=wrcoef('a',c,l,'db6',6); 
subplot(812);
plot(a);
ylabel('a6');

for i=1:6  %對(duì)分解的第6層到第1層的高頻系數(shù)分別進(jìn)行 
    d=wrcoef('d',c,l,'db6',7-i);
    subplot(8,1,i+2);
    plot(d);
    ylabel(['d',num2str(7-i)]);
end

經(jīng)驗(yàn)第一類突變用db6小波分解?

第二類db4小波分解

load nearbrk;

x=nearbrk;

%使用db4對(duì)信號(hào)進(jìn)行2層分解

[c,l]=wavedec(x,2,‘db4’); 

subplot(411);
plot(x);
ylabel('x');

%對(duì)分解的第六層低頻系數(shù)進(jìn)行重構(gòu)

a=wrcoef('a',c,l,'db4',2);

subplot(412);     
plot(a);     
ylabel('a2');

for i=1:2%對(duì)分解的第2層到第1層的高頻系數(shù)進(jìn)行重構(gòu)
    a=wrcoef('a',c,l,'db4',3-i);
    subplot(4,1,i+2);
    plot(d);
    ylabel(['d',num2str(3-i)]);
end

去除首尾無效數(shù)據(jù)https://blog.csdn.net/FDA_sq/article/details/124250130

舉例:銑削進(jìn)刀過程

  • 信號(hào)數(shù)據(jù)的首部有銑削進(jìn)刀過程導(dǎo)致的信號(hào)逐漸變大的數(shù)據(jù),
  • 相應(yīng)的圖中數(shù)據(jù)尾部有一段結(jié)束銑削退刀造成的逐漸變小的數(shù)據(jù),
  • 這兩段數(shù)據(jù)為非正常銑削信號(hào)數(shù)據(jù),因此是需要人工剔除的無效數(shù)據(jù)。

原理:

  1. 求取每次走刀過程首尾部無效數(shù)據(jù)的臨界值:每次走刀原始數(shù)據(jù)的上四分位值Q。
  2. 原始數(shù)據(jù)的首部從前往后尋找第一個(gè)大于等于Q的數(shù)據(jù)作為進(jìn)刀結(jié)束位置,剔除前面所有小于Q的信號(hào)數(shù)據(jù);
  3. 同理,尾部從后往前尋找第一個(gè)大于等于Q的數(shù)據(jù)作為退刀開始位置,剔除后面所有小于Q的數(shù)據(jù)。
%使用函數(shù):

Q=quantile(x,y,z)         

% x表示要求的矩陣或者向量;y的取值為表示要求的分位數(shù),

% 如四分之一中位數(shù)0.25,四分之三中位數(shù)0.75等;

% z的取值為1或者2,若值為1則表示按列求四分位數(shù),若為2表示按行求四分位數(shù)。

% Q為計(jì)算的上四分位值,常用大小為 (1,n).


%注:對(duì)于向量,
Q2=quantile(raw_data,0.75,1)

%等同于Q3 = prctile(raw_data,75)

重復(fù)值剔除https://blog.csdn.net/qq_43657442/article/details/118891434

使用?unique?函數(shù),

直接刪除重復(fù)行

unique(A,'rows',setOrder)

%其中,setOrder 參數(shù)有兩種取值,默認(rèn)是’sorted’ 即去掉重復(fù)后排序輸出(以第一個(gè)元素大小位依據(jù)),

%另一個(gè)是'stable' 代表去掉重復(fù)后按原來順序輸出

?示例

>> a=[1 0 1;1 0 1; 1 1 1;2 5 1; 1 1 1;0 1 2 ;0 4 5 ;0 1 2]

a =

     1     0     1
     1     0     1
     1     1     1
     2     5     1
     1     1     1
     0     1     2
     0     4     5
     0     1     2

>> unique(a,'row','stable')

ans =

     1     0     1
     1     1     1
     2     5     1
     0     1     2
     0     4     5

>> unique(a,'row')

ans =

     0     1     2
     0     4     5
     1     0     1
     1     1     1
     2     5     1

>> 

按列刪除重復(fù)行

[C,ia,ic] = unique(dataRed(:,1:2),'rows'):

% 基于1、2列的數(shù)據(jù)查找dataRed中所有的唯一行。
% 指定三個(gè)輸出以返回索引向量 ia 和 ic。

uA = dataRed(ia,:)

%使用 ia 對(duì) dataRed 進(jìn)行索引并檢索包含前兩列中元素的唯一組合的行。
  1. dataRed(:,1:2)?選擇了?dataRed?中所有行的前兩列。這通常是為了查找數(shù)據(jù)中某些列的唯一組合而不考慮其他列。
  2. 'rows'?參數(shù)告訴 MATLAB 在比較每個(gè)行時(shí)要考慮其順序,因此只有包含相同值且相同順序的行才會(huì)被視為相等。
  3. 執(zhí)行?unique?函數(shù),將前兩列看作一個(gè)矩陣,并返回所有唯一行的排序結(jié)果。結(jié)果分別存儲(chǔ)在三個(gè)變量?Cia?和?ic?中。

具體來說,輸出參數(shù)包含以下內(nèi)容:

  • C:一個(gè)矩陣,其中包含了輸入矩陣的所有唯一行,按首次出現(xiàn)順序排列。
  • ia:一個(gè)向量,其中包含了在輸入矩陣中所選列的所有唯一行的索引。對(duì)于輸入矩陣中的每個(gè)行,ia?中的相應(yīng)元素是?C?中相應(yīng)行的索引。
  • ic:一個(gè)向量,與輸入矩陣大小相同,其中包含了輸入矩陣中每個(gè)行的索引,以指示它在?C?中的位置。

假設(shè)有一個(gè)矩陣 dataRed 包含以下內(nèi)容:

dataRed = [1, 2, 3;
           4, 5, 6;
           7, 8, 9;
           1, 2, 3;
           4, 5, 6];

?調(diào)用 unique 函數(shù):

[C,ia,ic] = unique(dataRed(:,1:2),'rows');

?然后,MATLAB 將返回以下結(jié)果:

C =

     1     2
     4     5
     7     8

ia =

     1
     2
     3

ic =

     1
     2
     3
     1
     2

這意味著,dataRed 矩陣中前兩列的唯一組合是 (1, 2)、(4, 5)(7, 8)

ia 向量包含了這些行在 C 矩陣中所處的位置,

ic 向量指示了矩陣 dataRed 中的每個(gè)行在 C 矩陣中的位置。?

matlab 找到非空的位置 去除重復(fù)數(shù)據(jù)/去除NaNhttps://blog.csdn.net/qq_20784777/article/details/126480643?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-126480643-blog-118891434.235%5Ev35%5Epc_relevant_increate_t0_download_v2&spm=1001.2101.3001.4242.1&utm_relevant_index=3

找到非空的位置

matlab中find()函數(shù)用法?https://blog.csdn.net/qq_45767476/article/details/109081132

find()函數(shù)

?idx = find(isnan(data));

  • 用于查找一個(gè)向量或矩陣中所有包含 NaN(Not-a-Number)元素的下標(biāo)索引。
  • 具體地說,該語句執(zhí)行以下步驟:
  • isnan(data)返回一個(gè)與data相同大小的邏輯數(shù)組,其中包含了data中每個(gè)元素是否為NaN的信息。
  • 如果是NaN,則該位置為1;否則為0。
  • find()函數(shù)獲取輸入?yún)?shù)中非零元素的下標(biāo),因此對(duì)于isnan(data)返回的邏輯數(shù)組,
  • find()將會(huì)返回一個(gè)包含了所有為1的元素所在位置的下標(biāo)向量。
  • 因此,最終得到的結(jié)果是一個(gè)列向量idx,其中包含了所有data中NaN值的下標(biāo)索引。
idx = find(~isnan(data));
  • 用于查找一個(gè)向量或矩陣中所有不包含 NaN(Not-a-Number)元素的下標(biāo)索引。
  • 具體地說,該語句執(zhí)行以下步驟:
  • isnan(data)返回一個(gè)與data相同大小的邏輯數(shù)組,其中包含了data中每個(gè)元素是否為NaN的信息。
  • 如果是NaN,則該位置為1;否則為0。
  • 在此語句中,~運(yùn)算符對(duì)邏輯數(shù)組進(jìn)行求反操作,即將1變?yōu)?,0變?yōu)?。
  • 因此,得到的邏輯數(shù)組表示data中所有不是NaN的元素的位置。
  • find()函數(shù)獲取輸入?yún)?shù)中非零元素的下標(biāo),因此對(duì)于~isnan(data)返回的邏輯數(shù)組,
  • find()將會(huì)返回一個(gè)包含了所有為1的元素所在位置的下標(biāo)向量。
  • 因此,最終得到的結(jié)果是一個(gè)列向量idx,其中包含了所有data中非NaN值的下標(biāo)索引。

例如,假設(shè)有一個(gè)5x5的矩陣A,其中包含5個(gè)NaN值。

可以通過以下方式找到這些NaN值所在的位置:

A = [1 2 NaN 4 5;
     6 NaN 8 9 10;
     11 12 13 NaN 15;
     16 17 18 19 NaN;
     NaN 21 22 23 24];

idx = find(isnan(A))

結(jié)果

idx =

     3
     7
    12
    20
    25

這意味著,A矩陣的第3、7、12、20和25個(gè)元素是NaN。?

可以通過以下方式找到這些非NaN值所在的位置:?

A = [1 2 NaN 4 5;
     6 NaN 8 9 10;
     11 12 13 NaN 15;
     16 17 18 19 NaN;
     NaN 21 22 23 24];

idx = find(~isnan(A))

?結(jié)果

idx =

     1
     2
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    21
    22
    23
    24

isnan()函數(shù)用法https://blog.csdn.net/Intangilble/article/details/83786589

isnan(A):
%判斷數(shù)組的元素是否是NaN。(True for Not-a-Number.)

%用法說明:
B = isnan(A)

%返回一個(gè)與A相同維數(shù)的數(shù)組;
%若A的元素為NaN(非數(shù)值),在對(duì)應(yīng)位置上返回邏輯1(真),否則返回邏輯0(假)。

例子

(InF 代表正無窮量;-InF 代表負(fù)無窮量;NaN代表非數(shù)值量;)

>>isnan([pi NaN Inf -Inf])


ans =

  1×4 logical 數(shù)組

   0   1   0   0
[data  in] = unique(data(:, n)):
 
b = unique(A)
b = unique(A,'rows')
[b,m,n] = unique(...)
 
?

%描述
%1、b = unique(A)  返回的是和A中一樣的值,但是沒有重復(fù)元素。產(chǎn)生的結(jié)果向量按升序排序。
%A可以是一個(gè)字符串的單元陣列。

%2、b = unique(A,'rows')  返回的是A中的唯一的行數(shù)。

%3、[b,m,n] = unique(...)  也返回索引向量m和n,使得B = A(M) 和 A= B(N). 
%m的每一個(gè)元素是最大的下標(biāo),使得B = A(M). 對(duì)于行的組合,B = A(M,:) 和 A= B(N,:) 

剔除異常值及平滑處理https://www.bilibili.com/read/cv9279417

使用深度學(xué)習(xí)進(jìn)行“序列到序列”回歸https://ww2.mathworks.cn/help/deeplearning/ug/sequence-to-sequence-regression-using-deep-learning.html文章來源地址http://www.zghlxwxcb.cn/news/detail-732485.html

到了這里,關(guān)于數(shù)據(jù)預(yù)處理matlab的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包