fillmissing
填补缺失值
语法
描述
用常量值填充数组或表中缺失的项F
= fillmissing (一个
“常数”,v
)v
.如果一个
那么是矩阵还是多维数组呢v
可以是标量,也可以是向量。如果v
是一个向量,那么每个元素在对应的列中指定填充值一个
.如果一个
那是桌子还是时间表呢v
也可以是单元格数组,其元素包含每个表变量的填充值。
的数据类型定义缺失值一个
:
南
- - - - - -双
,单
,持续时间
,calendarDuration
NaT
- - - - - -datetime
< >失踪
- - - - - -字符串
<定义>
- - - - - -分类
{"}
- - - - - -细胞
特征向量
如果一个
是表,则每列的数据类型定义该列的缺失值。
例子
向量和南
值
矩阵南
值
创建一个2 × 2矩阵南
值。填满南
与One hundred.
在第一列和1000
在第二列。
A = [1 NaN;南2]
一个=2×21南南2
F =填充缺失(A,“不变”1000年[100])
F =2×21 1000 100 2
补缺数据
使用插值替换南
不均匀采样数据中的值。
定义一个由非均匀采样点组成的向量,并计算这些点上的正弦函数。
X = [-4*pi:0.1:0, 0.1:0.2:4*pi];A = sin(x);
注入南
值到一个
.
A(A < 0.75 & A > 0.5) = NaN;
使用线性插值填充缺失的数据,并返回填充的向量F
逻辑向量特遣部队
.值1 (真正的
)载于特遣部队
对应于的值F
都被填满了。
[F,TF] =填充缺失(A,“线性”,“SamplePoints”, x);
绘制原始数据和填充数据。
散射(x)在散射(x (TF), F (TF))传说(“原始数据”,填充数据的)
使用移动中位数法
使用移动中位数来填充缺失的数字数据。
创建一个样本点向量x
一个数据向量一个
其中包含缺失的值。
X = linspace(0,10,200);A = sin(x) + 0.5*(rand(size(x))-0.5);A([1:10 randi([1长度(x)],1,50)]) = NaN;
取代南
值一个
使用一个窗口长度为10的移动中值,并绘制原始数据和填充数据。
F =填充缺失(A,“movmedian”10);情节(x, F,“。”)举行在情节(x,,“。”)传说(“原始数据”,填充数据的)
使用自定义填充方法
定义要填充的自定义函数南
值与前面的非缺失值相同。
定义一个样本点向量t
和对应数据的向量一个
包含南
值。绘制数据图。
T = 10:10:100;A = [0.1 0.2 0.3 NaN NaN 0.6 0.7 NaN 0.9 1];散射(t)
使用local函数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
绘制原始数据和填充数据。
散射(t)在散射(t (TF), F (TF))
函数Y =正向填充(xs,ts,tq,n)使用之前的非缺失值填充缺失空白中的n个值y = NaN(1,数字(tq));Y (1:min(数值(tq),n)) = xs;结束
缺少端点的矩阵
创建一个缺少条目的矩阵,并使用线性插值一次填充跨列(第二次元)一行。对于每一行,用该行中最近的非缺失值填充开头和结尾的缺失值。
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]
一个=3×10南南5 3南5 7南9南8 9南1 4 5南5南4 9 8 7 2 4 1 1南
F =填充缺失(A,“线性”2,“EndValues”,“最近的”)
F =3×105 5 5 3 4 5 7 8 9 9 8 9 5 1 4 5 5 5 5 5 5 5 5 4 4 9 8 7 2 4 1 1 1 1 1
具有多种数据类型的表
为不同数据类型的表变量填充缺失值。
创建一个表,其变量包括分类
,双
,字符
数据类型。
A = table(categorical({“阳光”;“多云”;”}), 66;南;54) {”;“N”;“Y”}, [37;39;南),...“VariableNames”, {“描述”“温度”“雨”“湿度”})
一个=3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云南{' N '} 39 <定义> 54 {Y} NaN
用前一项的值替换所有缺失的项。元素中没有previous元素雨
变量时,缺失的字符向量不会被替换。
F =填充缺失(A,“以前”)
F =3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云66 {' N '} 39多云54 {Y} 39
取代南
的值。温度
而且湿度
变量一个
用0。
F =填充缺失(A,“不变”0,“DataVariables”, {“温度”,“湿度”})
F =3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云0 39 {' N '} <定义> 54 {Y} 0
或者,使用isnumeric
函数来标识要操作的数值变量。
F =填充缺失(A,“不变”0,“DataVariables”@isnumeric)
F =3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云0 39 {' N '} <定义> 54 {Y} 0
现在填充缺失的值一个
为每个表变量指定一个常量,这些变量包含在单元格数组中。
F =填充缺失(A,“不变”,{分类({“没有”}), 1000,“未知”1000})
F =3×4表描述温度雨湿度 ___________ ___________ ___________ ________ 阳光66{‘未知’}37多云1000 {' N '} 39没有54 1000 {Y}
指定最大间隙
创建时间向量t
以秒为单位和相应的数据向量一个
包含南
值。
T =秒([2 4 8 17 98 134 256 311 1001]);A = [1 3 23 NaN NaN 100 NaN 233];
只填写缺失的值一个
对应的最大间隙大小为250秒。因为秒差大于250秒,所以南
值未被填充。
F =填充缺失(A,“线性”,“SamplePoints”t“MaxGap”秒(250))
F =1×91.0000 3.0000 23.0000 25.7944 50.9435 62.1210 100.0000 NaN 233.0000
输入参数
一个
- - - - - -输入数据
向量|矩阵|多维数组|字符向量的单元格数组|表格|时间表
输入数据,指定为向量、矩阵、多维数组、字符向量的单元格数组、表格或时间表。
如果
一个
是时间表,则只填充表值。如果行乘以的相关向量包含aNaT
或南
值,然后fillmissing
产生错误。行时间必须唯一,并按升序列出。如果
一个
是单元格数组还是单元格数组变量表fillmissing
仅当单元格数组包含字符向量时填充缺失的元素。
v
- - - - - -填补常数
标量|向量|单元阵列
填充常量,指定为标量、向量或单元格数组。
如果
一个
那么是矩阵还是多维数组呢v
可以是表示每个操作维度的不同填充值的向量。的长度v
必须与操作尺寸的长度匹配。如果
一个
那是桌子还是时间表呢v
可以是填充值的单元格数组,指示每个变量的不同填充值。单元格数组中的元素数量必须与表中的变量数量相匹配。
方法
- - - - - -填补方法
“以前”
|“下一个”
|“最近的”
|“线性”
|样条的
|“pchip”
|“makima”
方法,指定为以下值之一:
方法 | 描述 |
---|---|
“以前” |
先前未丢失的值 |
“下一个” |
下一个非缺失值 |
“最近的” |
最近的非缺失值 |
“线性” |
相邻的,非缺失值的线性插值(数值,持续时间 ,datetime 仅限数据类型) |
样条的 |
分段三次样条插值(数字,持续时间 ,datetime 仅限数据类型) |
“pchip” |
保形分段三次样条插值(数值,持续时间 ,datetime 仅限数据类型) |
“makima” |
修正Akima立方Hermite插值(数字,持续时间 ,datetime 仅限数据类型) |
movmethod
- - - - - -移动的方法
“movmean”
|“movmedian”
填充缺失数据的移动方法,指定为以下值之一:
方法 | 描述 |
---|---|
“movmean” |
一个窗口长度的移动平均窗口 (仅限数值数据类型) |
“movmedian” |
在长度窗口上移动中间值窗口 (仅限数值数据类型) |
窗口
- - - - - -窗口长度
正整数标量|正整数的两元向量|正持续时间标量|正持续时间的两元向量
移动方法的窗口长度,指定为正整数标量、正整数的两个元素向量、正持续时间标量或正持续时间的两个元素向量。窗口是相对于样本点定义的。
如果窗口
是正整数标量,则窗口围绕当前元素居中并包含窗口1
相邻的元素。如果窗口
为偶数时,则窗口以当前元素和以前的元素为中心。
如果窗口
两元向量是正整数吗f [b]
,则该窗口包含当前元素,b
元素向后,和f
元素。
如果一个
是时间表还是SamplePoints
指定为datetime
或持续时间
向量,那么窗口必须是类型持续时间
.
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]
.
当一个
是时间表还是SamplePoints
指定为datetime
或持续时间
向量,gapwindow
必须有类型持续时间
.
昏暗的
- - - - - -操作维度
正整数标量
操作维度,指定为正整数标量。如果未指定值,则默认为第一个大小不等于1的数组维数。
考虑一个米
——- - - - - -n
输入矩阵,一个
:
fillmissing(方法1)
的每列数据填充缺失值一个
并返回米
——- - - - - -n
矩阵。fillmissing(方法2)
的每一行数据填充缺失的值一个
并返回米
——- - - - - -n
矩阵。
对于表格或时间表输入数据,昏暗的
不支持,操作将金宝app分别沿着每个表或时间表变量进行。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:fillmissing (T)方法,“SamplePoints”、“Var1”)
SamplePoints
- - - - - -采样点
向量|表变量名|标量|函数处理|表格vartype
下标
样本点,指定为样本点值的向量,如果输入数据是表格,则指定为下表中的选项之一。样本点代表x数据的-轴位置,并且必须排序并包含唯一的元素。采样点不需要均匀采样。向量[1 2 3…]
是默认值。
当输入数据是一个表时,您可以使用以下选项之一将样本点指定为表变量:
表格输入选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或标量字符串 |
|
标量变量索引 | 标量表变量索引 |
|
逻辑向量 | 一种逻辑向量,其每个元素对应于一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量(必须为)的函数句柄 |
|
vartype 下标 |
类生成的表下标 |
|
请注意
输入数据为时,不支持此名称-值参数金宝app时间表
.时间表使用行时间向量作为样本点。若要使用不同的抽样点,必须编辑时间表,使行时间包含所需的抽样点。
移动窗口是相对于样本点定义的。例如,如果t
那么,乘以向量是否对应于输入数据fillmissing(兰德(1 10)“movmean”,3,SamplePoints, t)
是否有一个表示时间间隔的窗口-1.5 t(我)
而且t(我)+ 1.5
.
当样本点向量有数据类型时datetime
或持续时间
时,移动窗口长度必须有类型持续时间
.
例子:fillmissing([1 NaN 3 4],'linear','SamplePoints',[1 2.5 3 4])
例子:fillmissing (T,“线性”,“SamplePoints”,“Var1”)
数据类型:单
|双
|datetime
|持续时间
DataVariables
- - - - - -要操作的表变量
表变量名|标量|向量|单元阵列|函数处理|表格vartype
下标
要操作的表变量,指定为此表中的选项之一。的DataVariables
Value指示要填充输入表中的哪些变量。
表中未指定的其他变量DataVariables
传递到输出而不被填充。
选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或字符串标量 |
|
变量名向量 | 字符向量或字符串数组的单元格数组,其中每个元素都是一个表变量名 |
|
变量指标的标量或向量 | 表变量索引的标量或向量 |
|
逻辑向量 | 一种逻辑向量,其每个元素对应于一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄 |
|
vartype 下标 |
类生成的表下标 |
|
例子:fillmissing(T,'linear','DataVariables',["Var1" "Var2" "Var4"])
ReplaceValues
- - - - - -替换值指示器
真正的
或1
(默认)|假
或0
替换值指示符,指定为这些值之一时一个
表或时间表:
真正的
或1
-用填满的表变量替换包含缺失项的输入表变量。假
或0
-在输入表中添加所有检查过的表变量。附加变量中的缺失项将被填充。
对于向量、矩阵或多维数组输入数据,ReplaceValues
不支持。金宝app
例子:fillmissing (T,‘以前’,‘ReplaceValues’,假)
EndValues
- - - - - -处理端点的方法
“extrap”
(默认)|“以前”
|“下一个”
|“最近的”
|“没有”
|标量
处理端点的方法,指定为“extrap”
,“以前”
,“下一个”
,“最近的”
,“没有”
,或常数标量值。端点填充方法根据以下定义处理开头和结尾缺失的值:
方法 | 描述 |
---|---|
“extrap” |
一样方法 |
“以前” |
先前未丢失的值 |
“下一个” |
下一个非缺失值 |
“最近的” |
最近的非缺失值 |
“没有” |
无填充值 |
标量 | 常数值(数值,持续时间 ,datetime 仅限数据类型) |
MissingLocations
- - - - - -已知缺失指标
向量|矩阵|多维数组
已知的缺失指示器,指定为逻辑向量、矩阵或大小相同的多维数组一个
.指示器元素可以是真正的
的对应位置中缺少的值一个
或假
否则。
数据类型:逻辑
MaxGap
- - - - - -要填充的最大间隙尺寸
数字标量|持续时间
标量|calendarDuration
标量
要填充的最大间隙大小,指定为数值标量,持续时间
标量或calendarDuration
标量。间隙是连续缺失值的集群,其大小是围绕间隙的非缺失值之间的距离。间隙大小是相对于样本点计算的。小于或等于最大间隙尺寸的间隙被填充,大于间隙尺寸的间隙不被填充。
例如,考虑向量y = [25 NaN NaN 100]
使用默认的采样点[1 2 3 4]
.矢量中的间隙大小由样本点计算为4 - 1 = 3
,所以aMaxGap
的价值2
保持缺失的值不变,而MaxGap
的价值3.
填充缺失的值。
对于在数据的开头或结尾缺少值:
输入数据开头或结尾的单个缺失值的空白大小为0,并且始终被填充。
在输入数据的开头或结尾出现的缺失值簇并没有完全被非缺失值包围,因此使用最近的现有样本点计算间隙大小。对于默认的采样点
1: N
,这产生的间隙大小比相同的群集出现在数据中间时小1。
输出参数
F
-填充数据
向量|矩阵|多维数组|表|时间表
填满的数据,以矢量、矩阵、多维数组、表格或时间表的形式返回。
F
尺寸和一个
除非ReplaceValues
是假
.如果的值ReplaceValues
是假
的宽度F
输入数据宽度与指定的数据变量数量的和。
特遣部队
-填充数据指示灯
向量|矩阵|多维数组
已填充的数据指示器,以向量、矩阵或多维数组的形式返回。特遣部队
是一个逻辑数组,其中1 (真正的
)对应于已填写的条目F
和0 (假
)对应于未更改的条目。
特遣部队
尺寸和F
.
数据类型:逻辑
提示
对于非字符向量的结构数组或单元格数组的输入数据,
fillmissing
不填写任何条目。若要填充结构数组中的缺失项,请应用fillmissing
属性将结构中的每个字段structfun
函数。若要填充非字符向量单元格数组中的缺失项,请应用fillmissing
单元格数组中的每个单元格cellfun
函数。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
的
样条的
而且“makima”
方法不受支持。金宝app不支持函数句柄填充方法。金宝app
的
MaxGap
,SamplePoints
,MissingLocations
不支持名称-值参数。金宝app的
DataVariables
名称-值参数不能指定函数句柄。的
EndValues
名称-值参数只能指定“extrap”
.的语法
fillmissing (movmethod,窗口)
不支持以下情况金宝app一个
是一个很长的时间表。的语法
fillmissing(“常数”,v)
必须为?指定标量值v
.的语法
fillmissing (___)
不支持字符向量变量金宝app时一个
就是一张高高的桌子或者一张高高的时间表。
有关更多信息,请参见高大的数组.
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
的
MaxGap
而且ReplaceValues
不支持名称-值参数。金宝app的
“makima”
选项不支持。金宝app当
SamplePoints
值具有类型datetime
或者输入的数据是时间表用的datetime
行次,只有方法“不变”
,“movmean”
,“movmedian”
都受支持金宝app。函数的句柄输入
fillmethod
参数不支持。金宝app
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
在R2016b中引入R2022b:字符数组没有标准缺失值
字符数组没有标准缺失值的默认定义。因此,fillmissing
处理空白字符数组元素(' '
)为非缺失。例如,fillmissing ([' a ';' '],“之前”)
返回[" a ";' ')
.之前,它返回[" a ";“a”)
.
若要将空白字符数组元素视为缺失,请使用MissingLocations
名称-值参数。例如,使用查找空白字符数组元素TF = ismissing(['a';' '],' ')
,然后指定一个已知缺失的指示器,如F = fillmissing(['a';' '],“之前”,MissingLocations = TF)
.
R2022a:追加填充值
对于表或时间表输入数据,在输入表中添加检查过的所有表变量。附加变量中的缺失项将被填充。属性附加而不是替换表变量ReplaceValues
参数的名称-值假
.
R2021b:指定样本点作为表变量
属性将样本点指定为表变量SamplePoints
名称-值参数。
R2021a:指定自定义填充方法
通过指定,使用自定义方法填充缺失的值fillfun
作为函数句柄。
另请参阅
功能
实时编辑任务
应用程序
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。