fillmissing2
语法
说明
支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,F = fillmissing2(___,Name,Value)fillmissing2(A,"linear",SamplePoints={1:5 10:2:18}) 指定 A 中数据的采样点位置。
示例
创建一个包含多个 NaN 值的 5×5 矩阵。
A = magic(5); A(1,2) = NaN; A(3:4,3:4) = NaN
A = 5×5
17 NaN 1 8 15
23 5 7 14 16
4 6 NaN NaN 22
10 12 NaN NaN 3
11 18 25 2 9
用最接近的非缺失条目填充 A 的缺失条目。
F = fillmissing2(A,"nearest")F = 5×5
17 1 1 8 15
23 5 7 14 16
4 6 7 22 22
10 12 25 3 3
11 18 25 2 9
创建一个 51×51 网格,并基于该网格定义一个函数。
n = 51; [x,y] = meshgrid(linspace(-2,2,n)); f = x.^2-y.^2;
用 NaN 值随机替换函数值的 5% 以仿真缺失数据。
NaNPercent = 0.05; randEntries = randperm(n^2,round(NaNPercent*n^2)); f(randEntries) = NaN;
使用线性插值填充数据中的缺失条目。然后重构数据以进行绘图。
F = fillmissing2(f,"linear");
x = reshape(x,n^2,1);
y = reshape(y,n^2,1);
f = reshape(f,n^2,1);
F = reshape(F,n^2,1);对原始数据与填充后的数据一起绘图。
filledData = scatter3(x,y,F,24,"red","filled",... MarkerEdgeColor="black"); hold on originalData = scatter3(x,y,f,24,"green","filled",... MarkerEdgeColor="black"); legend([filledData,originalData],... {"Filled","Original"},Location="north")

创建一个 8×8 矩阵。用 NaN 值随机替换矩阵元素的 5% 以仿真缺失数据。
n = 8; A = magic(n); NaNPercent = 0.05; randEntries = randperm(n^2,round(NaNPercent*n^2)); A(randEntries) = NaN
A = 8×8
64 2 3 61 60 6 7 57
9 55 54 12 13 51 50 NaN
17 47 46 20 21 43 42 24
40 26 27 37 36 30 31 33
32 34 35 29 28 38 NaN 25
41 23 22 44 45 19 18 48
49 15 14 52 53 11 10 56
NaN 58 59 5 4 62 63 1
使用以当前位置为中心的 2×3 移动窗中位数填充 A 的缺失条目。
F = fillmissing2(A,"movmean",{2 3})F = 8×8
64.0000 2.0000 3.0000 61.0000 60.0000 6.0000 7.0000 57.0000
9.0000 55.0000 54.0000 12.0000 13.0000 51.0000 50.0000 38.0000
17.0000 47.0000 46.0000 20.0000 21.0000 43.0000 42.0000 24.0000
40.0000 26.0000 27.0000 37.0000 36.0000 30.0000 31.0000 33.0000
32.0000 34.0000 35.0000 29.0000 28.0000 38.0000 31.4000 25.0000
41.0000 23.0000 22.0000 44.0000 45.0000 19.0000 18.0000 48.0000
49.0000 15.0000 14.0000 52.0000 53.0000 11.0000 10.0000 56.0000
40.6667 58.0000 59.0000 5.0000 4.0000 62.0000 63.0000 1.0000
创建一个包含前 25 个平方根的 5×5 矩阵。
A = reshape((1:25).^(1/2),[5 5])';
将一个矩阵元素替换为 NaN 值以仿真缺失条目。将另一个矩阵元素替换为异常值。
A(4,4) = NaN; A(2,2) = 100
A = 5×5
1.0000 1.4142 1.7321 2.0000 2.2361
2.4495 100.0000 2.8284 3.0000 3.1623
3.3166 3.4641 3.6056 3.7417 3.8730
4.0000 4.1231 4.2426 NaN 4.4721
4.5826 4.6904 4.7958 4.8990 5.0000
将缺失条目定义为值为 NaN 或绝对值大于 10 的条目。
M = isnan(A) | abs(A)>10;
使用 MissingLocations 名称-值参量填充 NaN 值和离群值。使用可选的 TF 输出参量确认 NaN 条目和离群条目均已填充。
[F,TF] = fillmissing2(A,"cubic",MissingLocations=M)F = 5×5
1.0000 1.4142 1.7321 2.0000 2.2361
2.4495 2.6432 2.8284 3.0000 3.1623
3.3166 3.4641 3.6056 3.7417 3.8730
4.0000 4.1231 4.2426 4.3575 4.4721
4.5826 4.6904 4.7958 4.8990 5.0000
TF = 5×5 logical array
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
0 0 0 0 0
创建一个包含多个 NaN 值的 5×5 矩阵。
A = magic(5); A(1,2) = NaN; A(3:4,3:4) = NaN
A = 5×5
17 NaN 1 8 15
23 5 7 14 16
4 6 NaN NaN 22
10 12 NaN NaN 3
11 18 25 2 9
指定非等间距采样点,以使用线性插值填充缺失条目。
xs = [1 1.99 2 2.01 3];
ys = [1 3 8 9.5 10];
FNonuni = fillmissing2(A,"linear",SamplePoints={xs ys})FNonuni = 5×5
17.0000 12.4286 1.0000 8.0000 15.0000
23.0000 5.0000 7.0000 14.0000 16.0000
4.0000 6.0000 7.1782 13.8812 22.0000
10.0000 12.0000 7.3564 13.7624 3.0000
11.0000 18.0000 25.0000 2.0000 9.0000
另请使用等间距采样点通过线性插值填充缺失条目。比较 FNonuni 和 FUni 中的结果。
FUni = fillmissing2(A,"linear")FUni = 5×5
17.0000 9.0000 1.0000 8.0000 15.0000
23.0000 5.0000 7.0000 14.0000 16.0000
4.0000 6.0000 11.3333 16.6667 22.0000
10.0000 12.0000 9.0000 6.0000 3.0000
11.0000 18.0000 25.0000 2.0000 9.0000
输入参数
输入数据,指定为数值矩阵。
数据类型: double | single
复数支持: 是
填充方法,指定为下表中的值之一。
| 方法 | 描述 |
|---|---|
"nearest" | 距离最近的非缺失条目 |
"linear" | 非缺失条目的线性插值 |
"natural" | 非缺失条目的自然邻点插值 |
"cubic" | 非缺失条目的三次插值 |
"v4" | 非缺失条目的双调和样条插值 |
移窗方法的窗描述,指定为正整数或 duration 标量、正整数或 duration 值的二元素元胞数组,或非负整数或 duration 值的二元素向量的二元素元胞数组。窗是相对于采样点定义的。
如果 window 是正整数标量,则窗是由相邻条目组成的 window×window 块。如果 window 是奇数,则窗以当前条目为中心;如果 window 是偶数,则窗以 A 的 2×2 子矩阵为中心,该子矩阵的右下角条目是当前条目。
如果 window 是由正整数组成的二元素元胞数组 {m n},则窗是以当前条目为中心的 m×n 块。
如果 window 是非负整数的二元素向量的二元素元胞数组 {[bRow fRow] [bCol fCol]},则窗包含当前条目的行和列、前导 bRow 行和后继 fRow 行,以及前导 bCol 列和后继 fCol 列。
如果 window 的类型为 duration,则必须将 SamplePoints 名称-值参量指定为二元素元胞数组,其元素为 datetime 或 duration 值。
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: fillmissing2(A,"v4",SamplePoints={1:5,10:2:18})
采样点,指定为由采样点值向量组成的二元素元胞数组 {xs ys}。xs 向量中的采样点表示数据的 x 轴位置,ys 向量中的采样点表示数据的 y 轴位置。xs 和 ys 都必须经过排序,不能包含重复元素,并且必须与 A 在对应网格维度上的大小匹配。采样点不需要均匀采样。如果 A 是 m×n 矩阵,则 1: 是 mxs 的默认值,1: 是 nys 的默认值。
移动窗基于采样点进行定义。例如,如果 xs 和 ys 是对应于输入数据的时间向量,则 fillmissing2(rand(10,10),"movmedian",duration([0 0 5]),SamplePoints={xs ys}) 使用窗,该窗表示当前元素时间前后 2.5 秒的时间间隔。当采样点向量的数据类型为 datetime 或 duration 时,移动窗描述的类型必须为 duration。
示例: fillmissing2(A,"natural",SamplePoints={1:5,10:2:18})
已知缺失值指示符,指定为与 A 大小相同的逻辑矩阵。指示符元素可以为 1 (true),指示缺失值位于 A 中的对应位置,否则为 0 (false)。
输出参量
版本历史记录
在 R2023a 中推出
另请参阅
函数
fillmissing|ismissing|standardizeMissing|anymissing|rmmissing|filloutliers|isnan|missing|isnat|smoothdata|smoothdata2
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)