fillmissing
填充缺失条目
语法
说明
使用常量值 F
= fillmissing(A
,'constant',v
)v
填充缺失的数组或表条目。如果 A
是矩阵或多维数组,则 v
可以是标量或向量。如果 v
是向量,则每个元素指定 A
的对应列中的填充值。如果 A
是表或时间表,则 v
也可以是元胞数组,其元素包含每个表变量的填充值。
缺失值的定义取决于 A
的数据类型:
NaN
-double
、single
、duration
和calendarDuration
NaT
—datetime
<missing>
—string
<undefined>
—categorical
{''}
- 字符向量的cell
如果 A
是表,则每个变量的数据类型定义该变量的缺失值。
您可以通过将清洗缺失数据任务添加到实时脚本中,以交互方式使用 fillmissing
功能。
使用一个或多个名称-值参量指定用于填充缺失值的其他参数。例如,如果 F
= fillmissing(___,Name,Value
)t
是时间值向量,则 fillmissing(A,'linear','SamplePoints',t)
会基于 t
中的时间值对 A
中的数据进行插值。
示例
包含 NaN
值的向量
创建包含 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
值组成的矩阵
创建一个 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
插入缺失数据
使用插值来替换非均匀采样的数据中的 NaN
值。
定义非均匀采样点向量,并计算这些点上的正弦函数。
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;
使用线性插值填充缺失数据,并返回填充的向量 F
和逻辑向量 TF
。TF
项中的值 1 (true
) 对应于 F
中的填充值。
[F,TF] = fillmissing(A,'linear','SamplePoints',x);
绘制原始数据和填充的数据。
scatter(x,A) hold on scatter(x(TF),F(TF)) legend('Original Data','Filled Data')
使用移动中位数方法
使用移动中位数填充缺失的数值数据。
创建样本点向量 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,'.-') hold on plot(x,A,'.-') legend('Original Data','Filled Data')
使用自定义填充方法
定义一个自定义函数,用上一个非缺失值填充 NaN
值。
定义采样点向量 t
和包含 NaN
值的对应数据向量 A
。绘制数据图。
t = 10:10:100; A = [0.1 0.2 0.3 NaN NaN 0.6 0.7 NaN 0.9 1]; scatter(t,A)
使用局部函数 forwardfill
(在示例末尾定义)用上一个非缺失值填充缺失空缺。函数句柄输入包括:
xs
- 用于填充的数据值ts
- 用于填充的值相对于采样点的位置tq
- 缺失值相对于采样点的位置n
- 要填充的空缺中的值的数目
n = 2;
gapwindow = [10 0];
[F,TF] = fillmissing(A,@(xs,ts,tq) forwardfill(xs,ts,tq,n),gapwindow,'SamplePoints',t);
空缺窗值 [10 0]
指示 fillmissing
考虑缺失值空缺之前的一个数据点,不考虑空缺之后的任何数据点,因为上一个非缺失值位于空缺之前 10 个单位。对于第一个空缺,由 fillmissing
确定的函数句柄输入值为:
xs = 0.3
ts = 30
tq = [40 50]
第二个空缺的函数句柄输入值为:
xs = 0.7
ts = 70
tq = 80
绘制原始数据和填充的数据。
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
包含缺失端点的矩阵
创建包含缺失条目的矩阵并使用线性插值填充各列(第二个维度),一次一行。对于每行,使用该行中距离最近的非缺失值填充前导和尾随缺失值。
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
包含多个数据类型的表
使用不同数据类型填充表变量的缺失值。
创建表,其变量包括 categorical
、double
和 char
数据类型。
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
或者,使用 isnumeric
函数识别要对其执行运算的数字变量。
F = fillmissing(A,'constant',0,'DataVariables',@isnumeric)
F=3×4 table
Description Temperature Rain Humidity
___________ ___________ __________ ________
Sunny 66 {0x0 char} 37
Cloudy 0 {'N' } 39
<undefined> 54 {'Y' } 0
现在,用包含在元胞数组中的指定常量来填充 A
中每个表变量的缺失值。
F = fillmissing(A,'constant',{categorical({'None'}),1000,'Unknown',1000})
F=3×4 table
Description Temperature Rain Humidity
___________ ___________ ___________ ________
Sunny 66 {'Unknown'} 37
Cloudy 1000 {'N' } 39
None 54 {'Y' } 1000
指定最大空缺
创建以秒为单位的时间向量 t
和对应的包含 NaN
值的数据向量 A
。
t = seconds([2 4 8 17 98 134 256 311 1001]); A = [1 3 23 NaN NaN NaN 100 NaN 233];
仅填充 A
中与最大为 250 秒的空缺大小对应的缺失值。由于第二个空缺大于 250 秒,因此不会填充 NaN
值。
F = fillmissing(A,'linear','SamplePoints',t,'MaxGap',seconds(250))
F = 1×9
1.0000 3.0000 23.0000 25.7944 50.9435 62.1210 100.0000 NaN 233.0000
使用自定义距离函数
使用自定义距离函数用最近邻行中的值来填充缺失条目。
创建一个包含 NaN
值的矩阵,然后创建一个逻辑向量来指示第三行中缺失条目的位置。
A = [1 3 9 3; -5 1 7 2; -1 1 7 NaN; 12 1 9 1]; m = isnan(A(3,:));
定义两个自定义函数来测量行之间的距离。
函数 d1
通过合计每个坐标对组之间的距离来测量行之间的距离;函数 dinf
通过查找坐标对组中的最大距离来测量行之间的距离。
d1 = @(x,~) sum(abs(diff(x)),'omitnan'); dinf = @(x,isNaN) norm(diff(x(:,~isNaN(1,:))),'inf');
计算第三行和其他三行中每行之间的 d1
测量距离。第二行距离最近。
d1s = arrayfun(@(r) d1(A([r 3],:),m), setdiff(1:4,3))
d1s = 1×3
6 4 15
fillmissing
函数将第三行中的 NaN
替换为第二行中对应的 2
。
F1 = fillmissing(A,'knn','Distance',d1)
F1 = 4×4
1 3 9 3
-5 1 7 2
-1 1 7 2
12 1 9 1
使用 dinf
测量距离的类似分析发现第一行与第三行距离最近。现在 fillmissing
函数将第三行中的 NaN
替换为第一行中对应的 3。
dinfs = arrayfun(@(r) dinf(A([r 3],:),m), setdiff(1:4,3))
dinfs = 1×3
2 4 13
Finf = fillmissing(A,'knn','Distance',dinf)
Finf = 4×4
1 3 9 3
-5 1 7 2
-1 1 7 3
12 1 9 1
填充非标准缺失值
自 R2024a 起
创建一个表并填充定义为 -99
的缺失条目。创建一个逻辑变量表 loc
,该表指示要填充的缺失条目的位置。然后,使用 MissingLocations
名称-值参量指定 fillmissing
的已知缺失条目位置。
A = [1; 4; 9; -99; 3]; B = [9; 0; 6; 2; 1]; C = [-99; 4; 2; 3; 8]; T = table(A,B,C)
T=5×3 table
A B C
___ _ ___
1 9 -99
4 0 4
9 6 2
-99 2 3
3 1 8
loc = T==-99
loc=5×3 table
A B C
_____ _____ _____
false false true
false false false
false false false
true false false
false false false
T = fillmissing(T,"next",MissingLocations=loc)
T=5×3 table
A B C
_ _ _
1 9 4
4 0 4
9 6 2
3 2 3
3 1 8
输入参数
A
— 输入数据
向量 | 矩阵 | 多维数组 | 字符向量元胞数组 | 表 | 时间表
输入数据,指定为向量、矩阵、多维数组、字符向量元胞数组、表或时间表。
如果
A
为时间表,则仅填充表值。如果关联的行时间向量包含NaT
或NaN
值,则fillmissing
会产生错误。行时间必须是唯一的并按升序列出。如果
A
是元胞数组或包含元胞数组变量的表,则fillmissing
仅在元胞数组包含字符向量时填充缺失元素。
v
— 填充常量
标量 | 向量 | 元胞数组
填充常量,指定为标量、向量或元胞数组。
如果
A
是矩阵或多维数组,则v
可以是向量,表示每个运算维度的一个不同填充值。v
的长度必须与运算维度的长度相匹配。如果
A
是表或时间表,则v
可以是填充值的元胞数组,表示每个变量的一个不同填充值。元胞数组中的元素数必须与表中的变量数目相匹配。
method
— 填充方法
'previous'
| 'next'
| 'nearest'
| 'linear'
| 'spline'
| 'pchip'
| 'makima'
填充方法,指定为下列值之一:
方法 | 描述 |
---|---|
'previous' | 上一个非缺失值 |
'next' | 下一个非缺失值 |
'nearest' | 由 x 轴定义的最接近的非缺失值 |
'linear' | 相邻非缺失值的线性插值(仅限数值、duration 和 datetime 数据类型) |
'spline' | 分段三次样条插值(仅限数值、duration 和 datetime 数据类型) |
'pchip' | 保形分段三次样条插值(仅限数值、duration 和 datetime 数据类型) |
'makima' | 修正 Akima 三次 Hermite 插值(仅限数值、duration 和 datetime 数据类型) |
movmethod
— 移窗法
'movmean'
| 'movmedian'
填充缺失数据的移动方法,指定为下列值之一:
方法 | 描述 |
---|---|
'movmean' | 窗长度为 window 的移动均值(仅限数值数据类型) |
'movmedian' | 窗长度为 window 的移动中位数(仅限数值数据类型) |
window
— 窗长度
正整数标量 | 由正整数组成的二元素向量 | 正持续时间标量 | 由正持续时间组成的二元素向量
移动方法的窗长度,指定为正整数标量、由正整数组成的二元素向量、正持续时间标量或由正持续时间组成的二元素向量。窗是相对于采样点定义的。
如果 window
是正整数标量,则窗以当前元素为中心并且包含 window-1
个相邻元素。如果 window
是偶数,则窗口以当前元素和上一个元素为中心。
如果 window
是由正整数组成的二元素向量 [b f]
,则窗口包含当前元素、其之前的 b
个元素和之后的 f
个元素。
如果 A
是时间表或 SamplePoints
指定为 datetime
或 duration
向量,则窗口必须为 duration
类型。
k
— 最近邻的数量
1
(默认) | 正整数标量
用 'knn'
方法计算平均值的最近邻的数量,指定为正整数标量。
fillfun
— 自定义填充方法
函数句柄
示例: @(xs,ts,tq) myfun(xs,ts,tq)
自定义填充方法,指定为函数句柄。有效的函数句柄必须包括以下三个输入参量:
输入参量 | 描述 |
---|---|
xs | 包含用于填充的数据值的向量。xs 的长度必须与指定窗的长度匹配。 |
ts | 包含用于填充的值的位置的向量。ts 的长度必须与指定窗的长度匹配。ts 是采样点向量的子集。 |
tq | 包含缺失值位置的向量。tq 是采样点向量的子集。 |
该函数必须返回标量或与 tq
长度相同的向量。
gapwindow
— 空缺窗长度
正整数标量 | 由正整数组成的二元素向量 | 正持续时间标量 | 由正持续时间组成的二元素向量
自定义填充函数的空缺窗长度,指定为正整数标量、由正整数组成的二元素向量、正持续时间标量或由正持续时间组成的二元素向量。空缺窗是相对于采样点定义的。
为填充方法指定函数句柄 fillfun
时,gapwindow
的值表示围绕输入数据中缺失值的每个空缺的固定窗长度。然后由 fillfun
使用该窗中的值计算填充值。例如,对于默认采样点 t = 1:10
和数据 A = [10 20 NaN NaN 50 60 70 NaN 90 100]
,窗口长度 gapwindow = 3
将第一个空缺窗指定为 [20 NaN NaN 50]
,fillfun
对其进行运算以计算填充值。fillfun
进行运算的第二个空缺窗是 [70 NaN 90]
。
当 A
是时间表或 SamplePoints
指定为 datetime
或 duration
向量时,gapwindow
必须为 duration
类型。
dim
— 运算维度
正整数标量
运算维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
以一个 m
×n
输入矩阵 A
为例:
fillmissing(A,method,1)
根据A
的每列中的数据填充缺失值,并返回一个m
×n
矩阵。fillmissing(A,method,2)
根据A
的每行中的数据填充缺失值,并返回一个m
×n
矩阵。
对于表或时间表输入数据,不支持 dim
,并且分别对每个表或时间表变量进行运算。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
示例: fillmissing(T,method,SamplePoints="Var1")
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: fillmissing(T,method,"SamplePoints","Var1")
SamplePoints
— 样本点
向量 | 表变量名称 | 标量 | 函数句柄 | 表 vartype
下标
采样点,指定为由采样点值组成的向量或下表中的选项之一(当输入数据为表时)。样本点代表数据的 x 轴位置,必须为有序且包含唯一的元素。样本点不需要均匀采样。向量 [1 2 3 ...]
是默认值。
当输入数据是表时,可以使用以下选项之一将采样点指定为表变量:
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
函数句柄:
|
|
变量类型:
|
|
注意
当输入数据为 timetable
时,不支持此名称-值参量。时间表使用行时间向量作为采样点。要使用不同采样点,您必须编辑时间表,以便行时间包含所需的采样点。
移动窗基于样本点进行定义。例如,如果 t
是与输入数据对应的时间向量,则 fillmissing(rand(1,10),'movmean',3,'SamplePoints',t)
将有一个代表 t(i)-1.5
和 t(i)+1.5
之间时间间隔的窗。
当样本点向量的数据类型为 datetime
或 duration
时,移动窗长度的类型必须为 duration
。
示例: fillmissing([1 NaN 3 4],'linear','SamplePoints',[1 2.5 3 4])
示例: fillmissing(T,'linear','SamplePoints',"Var1")
数据类型: single
| double
| datetime
| duration
DataVariables
— 要对其进行操作的表变量
表变量名称 | 标量 | 向量 | 元胞数组 | 模式 | 函数句柄 | 表 vartype
下标
要对其进行操作的表变量,指定为下表中的选项之一。DataVariables
值指示要填充输入表的哪些变量。
表中未由 DataVariables
指定的其他变量会传递给输出,而不会对其进行填充。
索引方案 | 示例 |
---|---|
变量名称:
|
|
变量索引:
|
|
函数句柄:
|
|
变量类型:
|
|
示例: fillmissing(T,'linear','DataVariables',["Var1" "Var2" "Var4"])
ReplaceValues
— 替换值指示符
true
或 1
(默认) | false
或 0
替换值指示符,当 A
是表或时间表时,指定为以下值之一:
true
或1
- 用填充的表变量替换包含缺失条目的输入表变量。false
或0
- 向输入表追加已检查缺失条目的所有表变量。追加变量中已填充了缺失条目。
对于向量、矩阵或多维数组输入数据,不支持 ReplaceValues
。
示例: fillmissing(T,'previous','ReplaceValues',false)
EndValues
— 用于处理端点的方法
'extrap'
(默认) | 'previous'
| 'next'
| 'nearest'
| 'none'
| 标量
用于处理端点的方法,指定为 'extrap'
、'previous'
、'next'
、'nearest'
、'none'
或常量标量值。端点填充方法根据以下定义处理前导和尾随缺失值:
方法 | 描述 |
---|---|
'extrap' | 与 method 相同 |
'previous' | 上一个非缺失值 |
'next' | 下一个非缺失值 |
'nearest' | 距离最近的非缺失值 |
'none' | 无填充值 |
标量 | 常量值(仅限数值、duration 和 datetime 数据类型) |
MissingLocations
— 已知缺失条目指示符
向量 | 矩阵 | 多维数组 | 表 | 时间表
已知缺失条目指示符,指定为逻辑向量、矩阵或多维数组,或具有逻辑变量的表或时间表 (自 R2024a 起)。
如果 MissingLocations
是数组,其大小必须与 A
相同。如果 MissingLocations
是表或时间表,它必须包含与要对其进行操作的输入表变量的大小和名称相同的逻辑变量。
值为 1
(true
) 的元素表示 A
中缺失条目的位置。值为 0
(false
) 的元素表示非缺失条目。
数据类型: logical
MaxGap
— 要填充的最大空缺大小
数值标量 | duration
标量 | calendarDuration
标量
要填充的最大空缺大小,指定为数值标量、duration
标量或 calendarDuration
标量。空缺是指一系列连续缺失值,其大小是空缺前后的非缺失值之间的距离。空缺大小是相对于采样点计算得出的。小于或等于最大空缺大小的空缺将被填充,而大于空缺大小的空缺则不会被填充。
例如,假设有使用默认采样点 [1 2 3 4]
的向量 y = [25 NaN NaN 100]
。该向量中的空缺大小是基于采样点进行计算的,即 4 - 1 = 3
,因此 MaxGap
值为 2
时会保持缺失值不变,而 MaxGap
值为 3
时会填充缺失值。
对于位于数据开头或结尾的缺失值:
输入数据的开头或末尾的单个缺失值的空缺大小为 0,且始终会被填充。
出现在输入数据开头或结尾的缺失值簇并不完全由非缺失值包围,因此会使用最接近的现有采样点来计算空缺大小。对于默认采样点
1:N
,此时产生的空缺大小比相同的簇出现在数据中间时小 1。
Distance
— 距离函数
'euclidean'
(默认) | 'seuclidean'
| 函数句柄
查找最近邻行时使用的距离函数,指定为 'euclidean'
(欧几里德距离)、'seuclidean'
(缩放欧几里德距离)或距离函数的函数句柄。
如果为距离函数指定函数句柄,该函数必须满足以下条件:
该函数必须接受两个输入。
函数的第一个输入必须为一个包含两行的矩阵、表或时间表,其中包含两个要比较的向量。
函数的第二个输入必须为逻辑矩阵,表示向量中缺失值的位置。您可以通过将第二个输入指定为
~
来忽略它。该函数必须以
double
类型的实数标量值形式返回距离。
示例: fillmissing(A,'knn','Distance',@(x,~) sum(abs(diff(x)),'omitmissing'))
输出参量
F
— 填充的数据
向量 | 矩阵 | 多维数组 | 表 | 时间表
填充的数据,以向量、矩阵、多维数组、表或时间表形式返回。
除非 ReplaceValues
的值为 false
,否则 F
与 A
的大小相同。如果 ReplaceValues
的值是 false
,则 F
的宽度是输入数据宽度和指定的数据变量数目之和。
TF
— 填充的数据指示符
向量 | 矩阵 | 多维数组
填充的数据指示符,以向量、矩阵或多维数组形式返回。TF
是逻辑数组,其中 1
(true
) 对应于 F
中以前缺失但已填充的条目,0
(false
) 对应于未更改的条目。
TF
的大小与 F
相同。
数据类型: logical
提示
对于非字符向量的结构体数组或元胞数组的输入数据,
fillmissing
不填充任何条目。要填充结构体数组中缺失的条目,请使用structfun
函数将fillmissing
应用于结构体中的每个字段。要填充非字符向量元胞数组中缺失的条目,请使用cellfun
函数将fillmissing
应用于元胞数组中的每个元胞。
替代功能
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
用法说明和限制:
不支持
'spline'
和'makima'
方法。不支持函数句柄填充方法。
不支持
'knn'
填充方法和Distance
名称-值参量。不支持
MaxGap
、SamplePoints
和MissingLocations
名称-值参量。DataVariables
名称-值参量无法指定函数句柄。EndValues
名称-值参量只能指定'extrap'
。MissingLocations
名称-值参量无法指定表或时间表。当
A
是 tall 时间表时,不支持语法fillmissing(A,movmethod,window)
。语法
fillmissing(A,'constant',v)
必须为v
指定标量值。当
A
是 tall 表或 tall 时间表时,语法fillmissing(A,___)
不支持字符向量变量。
有关详细信息,请参阅 tall 数组。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
不支持
MaxGap
名称-值参量。不支持
'makima'
选项。当输入数据的类型为
datetime
或duration
时,'constant'
是唯一受支持的方法。当
SamplePoints
值的类型为datetime
或输入数据是具有datetime
行时间的时间表时,仅支持'constant'
、'movmean'
和'movmedian'
方法。不支持
fillmethod
参量的函数句柄输入。不支持
'knn'
填充方法和Distance
名称-值参量。MissingLocations
名称-值参量无法指定表或时间表。对于分类输入数据,填充常量必须与数据中的类别之一对应。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
不支持
'pchip'
填充方法。移动窗填充方法
'movmean'
和'movmedian'
不支持SamplePoints
名称-值参量。不支持
'knn'
填充方法和Distance
名称-值参量。MissingLocations
名称-值参量无法指定表或时间表。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
不支持
'knn'
填充方法和Distance
名称-值参量。MissingLocations
名称-值参量无法指定表或时间表。
有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2016b 中推出R2024a: 将缺失条目位置定义为表
通过将 MissingLocations
名称-值参量指定为包含输入表中具有名称的逻辑变量的表,定义缺失条目的位置。以前,您只能将 MissingLocations
指定为向量、矩阵或多维数组。
R2023a: 用最近邻行中的对应值填充
使用 'knn'
方法用最近邻行中的对应值填充缺失条目。您可以选择指定 k
值,用 k
个最接近的行中对应值的均值来填充缺失的条目。
您还可以使用 Distance
名称-值参量来指定自定义函数,用于测量行之间的距离。
R2022b: 字符数组没有标准缺失值
字符数组没有标准缺失值的默认定义。因此,fillmissing
将空白字符数组元素 (' '
) 视为非缺失值。例如,fillmissing(['a'; ' '],'previous')
返回 ['a'; ' ']
。以前,它返回 ['a'; 'a']
。
要将空白字符数组元素视为缺失,请使用 MissingLocations
名称-值参量。例如,使用 TF = ismissing(['a'; ' '],' ')
查找空白字符数组元素,然后指定一个已知的缺失值指示符,如 F = fillmissing(['a'; ' '],'previous',MissingLocations=TF)
中所示。
R2022a: 追加填充值
对于表或时间表输入数据,在输入表中追加所有已检查过缺失条目的表变量。追加变量中已填充了缺失条目。通过将 ReplaceValues
名称-值参量设置为 false
,即可追加而不是替换表变量。
R2021b: 将采样点指定为表变量
对于表输入数据,可以使用 SamplePoints
名称-值参量将采样点指定为表变量。
R2021a: 指定自定义填充方法
通过将 fillfun
指定为函数句柄,使用自定义方法填充缺失值。
另请参阅
函数
fillmissing2
|ismissing
|standardizeMissing
|anymissing
|rmmissing
|filloutliers
|isnan
|missing
|isnat
|smoothdata
实时编辑器任务
App
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)