Matlab 數據補全方法


fillmissing

填充缺失值

F = fillmissing(A,method)                         % 插值填充
案例如下:

x = [-4*pi:0.1:0, 0.1:0.2:4*pi];      % 定義非均勻采樣點向量,並計算這些點上的正弦函數。
A = sin(x);
A(A < 0.75 & A > 0.5) = NaN;          % 將 NaN 值插入 A 中。
% 使用線性插值填充缺失數據,並返回填充的向量 F 和邏輯向量 TF。TF 項中的值 1 (true) 對應於 F 中的填充值。
[F,TF] = fillmissing(A,'linear','SamplePoints',x);
plot(x,A,'.', x(TF),F(TF),'o')  % 繪制原始數據和填充的數據。
xlabel('x');
ylabel('sin(x)')
legend('Original Data','Filled Missing Data')

填充方法還包括:

方法 說明
'previous' 上一個非缺失值
'next' 下一個非缺失值
'nearest' 距離最近的非缺失值
'linear' 相鄰非缺失值的線性插值(僅限數值、duration 和 datetime 數據類型)
'spline' 分段三次樣條插值(僅限數值、duration 和 datetime 數據類型)
'pchip' 保形分段三次樣條插值(僅限數值、duration 和 datetime 數據類型)
'makima' 修正 Akima 三次 Hermite 插值(僅限數值、duration 和 datetime 數據類型)

 

F = fillmissing(A,movmethod,window)     % 滑動填充

案例如下:

% 創建樣本點向量 x 和包含缺失值的數據向量 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 的移動中位數替換 A 中的 NaN 值,並繪制原始數據和填充的數據。
F = fillmissing(A,'movmedian',10);  
plot(x,F,'r.-',x,A,'b.-') 
legend('Filled Missing Data','Original Data')

注意:當使用'movmedian'方法填充數據時,窗口長度為2並不能有效填充數據,原始數據中的NaN將被保留

填充方法還包括:

方法 說明
'movmean' 窗口長度為 window 的移動均值(僅限數值數據類型)
'movmedian' 窗口長度為 window 的移動中位數(僅限數值數據類型)

特別感謝:

李果(大涼茶)

參考文獻:

https://ww2.mathworks.cn/help/matlab/ref/fillmissing.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM