MATLAB中fillmissing函數(shù)用法小結
fillmissing函數(shù)的功能是填充缺失的條目。
語法
F = fillmissing(A,'constant',v) F = fillmissing(A,method) F = fillmissing(A,movmethod,window) F = fillmissing(A,'knn') F = fillmissing(A,'knn',k) F = fillmissing(A,fillfun,gapwindow) F = fillmissing(___,dim) F = fillmissing(___,Name,Value) [F,TF] = fillmissing(___)
說明
?F = fillmissing(A,'constant',v) 使用常量值 v 填充缺失的數(shù)組或表條目。如果 A 是矩陣或多維數(shù)組,則 v 可以是標量或向量。如果 v 是向量,則每個元素指定 A 的對應列中的填充值。如果 A 是表或時間表,則 v 也可以是元胞數(shù)組,其元素包含每個表變量的填充值。
缺失值的定義取決于 A
的數(shù)據(jù)類型:
- NaN - double、single、duration 和 calendarDuration
- NaT — datetime
- <missing> — string
- <undefined> — categorical
- {''} - 字符向量的 cell
如果 A
是表,則每個變量的數(shù)據(jù)類型定義該變量的缺失值。
?F = fillmissing(A,method) 使用 method 指定的方法填充缺失的條目。例如,fillmissing(A,'previous') 對 A 中的缺失條目使用上一個非缺失條目進行填充。
?F = fillmissing(A,movmethod,window) 使用窗長度為 window 的移動窗均值或中位數(shù)填充缺失條目。例如,fillmissing(A,'movmean',5) 使用窗長度為 5 的移動均值填充缺失數(shù)據(jù)。
F = fillmissing(A,'knn') 用最近鄰行中的對應值填充缺失條目,這些值是根據(jù)行之間的成對歐幾里德距離計算的。
F = fillmissing(A,'knn',k) 用 k 最近鄰行中對應值的均值填充缺失條目,該均值是根據(jù)行之間的成對歐幾里德距離計算的。例如,fillmissing(A,'knn',5) 用五個最近鄰行中對應值的均值填充 A 中的缺失條目。
F = fillmissing(A,fillfun,gapwindow) 使用由函數(shù)句柄 fillfun 指定的自定義方法填充缺失條目的空缺,并在每個空缺周圍設置固定窗,從該窗計算填充值。fillfun 必須具有輸入?yún)?shù) xs、ts 和 tq,它們是向量,分別包含長度為 gapwindow 的采樣數(shù)據(jù) xs、長度為 gapwindow 的采樣數(shù)據(jù)位置 ts 和缺失數(shù)據(jù)位置 tq。ts 和 tq 中的位置是采樣點向量的子集。
F = fillmissing(___,dim) 支持上述語法中的任何輸入?yún)?shù)組合,且可指定 A 中要進行運算的維度。默認情況下,fillmissing 沿其大小不為 1 的第一個維度進行運算。例如,如果 A 是矩陣,則 fillmissing(A,2) 跨 A 的各列進行運算,逐行填充缺失的數(shù)據(jù)。
F = fillmissing(___,Name,Value) 使用一個或多個名稱-值參數(shù)指定用于填充缺失值的其他參數(shù)。例如,如果 t 是時間值向量,則 fillmissing(A,'linear','SamplePoints',t) 會基于 t 中的時間值對 A 中的數(shù)據(jù)進行插值。
?[F,TF] = fillmissing(___) 還返回邏輯數(shù)組 TF,該數(shù)組指示 F 中先前缺失現(xiàn)已填充的條目的位置。
示例
包含 NaN
值的向量
創(chuàng)建包含 NaN 值的向量,并使用前一個非缺失值替換每個 NaN。
A = [1 3 NaN 4 NaN NaN 5]; F = fillmissing(A,'previous') F = 1×7 1 3 3 4 4 4 5
由 NaN
值組成的矩陣
創(chuàng)建一個 2×2 矩陣,每列有一個 NaN 值。在第一列中用 100 填充 NaN,在第二列中用 1000 填充。
A = [1 NaN; NaN 2] A = 2×2 1 NaN NaN 2 F = fillmissing(A,'constant',[100 1000]) F = 2×2 1 1000 100 2
插入缺失數(shù)據(jù)
使用插值來替換非均勻采樣的數(shù)據(jù)中的 NaN 值。定義非均勻采樣點向量,并計算這些點上的正弦函數(shù)。
x = [-4*pi:0.1:0, 0.1:0.2:4*pi]; A = sin(x);
將 NaN 值插入 A 中。
A(A < 0.75 & A > 0.5) = NaN;
使用線性插值填充缺失數(shù)據(jù),并返回填充的向量 F 和邏輯向量 TF。TF 項中的值 1 (true) 對應于 F 中的填充值。
[F,TF] = fillmissing(A,'linear','SamplePoints',x);
繪制原始數(shù)據(jù)和填充的數(shù)據(jù)。
scatter(x,A) hold on scatter(x(TF),F(TF)) legend('Original Data','Filled Data')
如圖所示:
使用移動中位數(shù)方法
使用移動中位數(shù)填充缺失的數(shù)值數(shù)據(jù)。創(chuàng)建樣本點向量 x 和包含缺失值的數(shù)據(jù)向量 A。
x = linspace(0,10,200); A = sin(x) + 0.5*(rand(size(x))-0.5); A([1:10 randi([1 length(x)],1,50)]) = NaN;
使用窗長度為 10 的移動中位數(shù)替換 A 中的 NaN 值,并繪制原始數(shù)據(jù)和填充的數(shù)據(jù)。
F = fillmissing(A,'movmedian',10); plot(x,F,'.-') hold on plot(x,A,'.-') legend('Original Data','Filled Data')
如圖所示:
使用自定義填充方法
定義一個自定義函數(shù),用上一個非缺失值填充 NaN 值。定義采樣點向量 t 和包含 NaN 值的對應數(shù)據(jù)向量 A。繪制數(shù)據(jù)圖。
t = 10:10:100; A = [0.1 0.2 0.3 NaN NaN 0.6 0.7 NaN 0.9 1]; scatter(t,A)
如圖所示:
使用局部函數(shù) forwardfill(在示例末尾定義)用上一個非缺失值填充缺失空缺。函數(shù)句柄輸入包括:
- xs - 用于填充的數(shù)據(jù)值
- ts - 用于填充的值相對于采樣點的位置
- tq - 缺失值相對于采樣點的位置
- n - 要填充的空缺中的值的數(shù)目
n = 2; gapwindow = [10 0]; [F,TF] = fillmissing(A,@(xs,ts,tq) forwardfill(xs,ts,tq,n),gapwindow,'SamplePoints',t);
空缺窗值 [10 0] 指示 fillmissing 考慮缺失值空缺之前的一個數(shù)據(jù)點,不考慮空缺之后的任何數(shù)據(jù)點,因為上一個非缺失值位于空缺之前 10 個單位。對于第一個空缺,由 fillmissing 確定的函數(shù)句柄輸入值為:
- xs = 0.3
- ts = 30
- tq = [40 50]
第二個空缺的函數(shù)句柄輸入值為:
- xs = 0.7
- ts = 70
- tq = 80
繪制原始數(shù)據(jù)和填充的數(shù)據(jù)。
scatter(t,A) hold on scatter(t(TF),F(TF))
如圖所示:
function y = forwardfill(xs,ts,tq,n) % Fill n values in the missing gap using the previous nonmissing value y = NaN(1,numel(tq)); y(1:min(numel(tq),n)) = xs; end
包含缺失端點的矩陣
創(chuàng)建包含缺失條目的矩陣并使用線性插值填充各列(第二個維度),一次一行。對于每行,使用該行中距離最近的非缺失值填充前導和尾隨缺失值。
A = [NaN NaN 5 3 NaN 5 7 NaN 9 NaN; 8 9 NaN 1 4 5 NaN 5 NaN 5; NaN 4 9 8 7 2 4 1 1 NaN] A = 3×10 NaN NaN 5 3 NaN 5 7 NaN 9 NaN 8 9 NaN 1 4 5 NaN 5 NaN 5 NaN 4 9 8 7 2 4 1 1 NaN F = fillmissing(A,'linear',2,'EndValues','nearest') F = 3×10 5 5 5 3 4 5 7 8 9 9 8 9 5 1 4 5 5 5 5 5 4 4 9 8 7 2 4 1 1 1
包含多個數(shù)據(jù)類型的表
使用不同數(shù)據(jù)類型填充表變量的缺失值。創(chuàng)建表,其變量包括 categorical、double 和 char 數(shù)據(jù)類型。
A = table(categorical({'Sunny'; 'Cloudy'; ''}),[66; NaN; 54],{''; 'N'; 'Y'},[37; 39; NaN],... 'VariableNames',{'Description' 'Temperature' 'Rain' 'Humidity'}) A=3×4 table Description Temperature Rain Humidity ___________ ___________ __________ ________ Sunny 66 {0x0 char} 37 Cloudy NaN {'N' } 39 <undefined> 54 {'Y' } NaN
用上一個條目的值替換所有缺失的條目。由于 Rain 變量中不存在前一個元素,缺失的字符向量將不會被替換。
F = fillmissing(A,'previous') F=3×4 table Description Temperature Rain Humidity ___________ ___________ __________ ________ Sunny 66 {0x0 char} 37 Cloudy 66 {'N' } 39 Cloudy 54 {'Y' } 39
將 A 中 Temperature 和 Humidity 變量的 NaN 值替換為 0。
F = fillmissing(A,'constant',0,'DataVariables',{'Temperature','Humidity'}) F=3×4 table Description Temperature Rain Humidity ___________ ___________ __________ ________ Sunny 66 {0x0 char} 37 Cloudy 0 {'N' } 39 <undefined> 54 {'Y' } 0
參數(shù)說明:
A-輸入數(shù)據(jù),指定為向量、矩陣、多維數(shù)組、字符向量元胞數(shù)組、表或時間表。
- 如果 A 為時間表,則僅填充表值。如果關聯(lián)的行時間向量包含 NaT 或 NaN 值,則 fillmissing 會產(chǎn)生錯誤。行時間必須是唯一的并按升序列出。
- 如果 A 是元胞數(shù)組或包含元胞數(shù)組變量的表,則 fillmissing 僅在元胞數(shù)組包含字符向量時填充缺失元素。
v-填充常量,指定為標量、向量或元胞數(shù)組。
- 如果 A 是矩陣或多維數(shù)組,則 v 可以是向量,表示每個運算維度的一個不同填充值。v 的長度必須與運算維度的長度相匹配。
- 如果 A 是表或時間表,則 v 可以是填充值的元胞數(shù)組,表示每個變量的一個不同填充值。元胞數(shù)組中的元素數(shù)必須與表中的變量數(shù)目相匹配。
method-填充方法,指定為下列值之一:
方法 | 描述 |
---|---|
'previous' | 上一個非缺失值 |
'next' | 下一個非缺失值 |
'nearest' | 距離最近的非缺失值 |
'linear' | 相鄰非缺失值的線性插值(僅限數(shù)值、duration 和 datetime 數(shù)據(jù)類型) |
'spline' | 分段三次樣條插值(僅限數(shù)值、duration 和 datetime 數(shù)據(jù)類型) |
'pchip' | 保形分段三次樣條插值(僅限數(shù)值、duration 和 datetime 數(shù)據(jù)類型) |
'makima' | 修正 Akima 三次 Hermite 插值(僅限數(shù)值、duration 和 datetime 數(shù)據(jù)類型) |
movmethod
— 移窗法
填充缺失數(shù)據(jù)的移動方法,指定為下列值之一:
方法 | 描述 |
---|---|
'movmean' | 窗長度為 window 的移動均值(僅限數(shù)值數(shù)據(jù)類型) |
'movmedian' | 窗長度為 window 的移動中位數(shù)(僅限數(shù)值數(shù)據(jù)類型) |
window
— 窗長度
移動方法的窗長度,指定為正整數(shù)標量、由正整數(shù)組成的二元素向量、正持續(xù)時間標量或由正持續(xù)時間組成的二元素向量。窗是相對于采樣點定義的。
如果 window 是正整數(shù)標量,則窗以當前元素為中心并且包含 window-1 個相鄰元素。如果 window 是偶數(shù),則窗口以當前元素和上一個元素為中心。
如果 window 是由正整數(shù)組成的二元素向量 [b f],則窗口包含當前元素、其之前的 b 個元素和之后的 f 個元素。
如果 A 是時間表或 SamplePoints 指定為 datetime 或 duration 向量,則窗口必須為 duration 類型。
k
— 最近鄰的數(shù)量,用 'knn' 方法計算平均值的最近鄰的數(shù)量,指定為正整數(shù)標量。
到此這篇關于MATLAB中fillmissing函數(shù)用法的文章就介紹到這了,更多相關MATLAB中fillmissing函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript之Map和Set_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了JavaScript之Map和Set的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06js實現(xiàn)html table 行,列鎖定的簡單實例
下面小編就為大家?guī)硪黄猨s實現(xiàn)html table 行,列鎖定的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10使用layui實現(xiàn)的左側菜單欄以及動態(tài)操作tab項方法
今天小編就為大家分享一篇使用layui實現(xiàn)的左側菜單欄以及動態(tài)操作tab項方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09