fillmissing
填补缺失值
语法
描述
用常量值填充数组或表中缺失的项F
= fillmissing (一个
“常数”,v
)v
.如果一个
那么是矩阵还是多维数组呢v
可以是标量,也可以是向量。如果v
是一个向量,那么每个元素在对应的列中指定填充值一个
.如果一个
那么,是表格还是时间表v
也可以是单元格数组,其元素包含每个表变量的填充值。
的数据类型定义缺失值一个
:
南
- - - - - -双
,单
,持续时间
,calendarDuration
NaT
- - - - - -datetime
< >失踪
- - - - - -字符串
<定义>
- - - - - -分类
{"}
- - - - - -细胞
特征向量
如果一个
是一个表,则每列的数据类型定义该列缺少的值。
例子
向量和南
值
创建一个包含南
值,并替换每个值南
使用前面的非缺失值。
A = [1 3 NaN 4 NaN NaN 5];F = fillmissing (,“以前”)
F =1×71 3 3 4 4 4 4 5
矩阵南
值
创建一个2 × 2矩阵南
值。填满南
与One hundred.
在第一列和1000
在第二列。
A = [1 NaN;南2]
一个=2×21楠楠2
F = fillmissing (,“不变”1000年[100])
F =2×21 1000 100 2
插入缺失的数据
使用插值替换南
非均匀采样数据中的值。
定义一个非均匀采样点的向量,并计算在这些点上的正弦函数。
X = [-4*pi:0.1:0, 0.1:0.2:4*pi];一个= sin (x);
注入南
值到一个
.
A(A < 0.75 & A > 0.5) = NaN;
使用线性插值填充缺失的数据,并返回填充的向量F
逻辑向量特遣部队
.值1 (真正的
)在特遣部队
对应的值F
吃饱了。
(F, TF) = fillmissing (,“线性”,“SamplePoints”, x);
绘制原始数据和填充数据。
散射(x)在散射(x (TF), F (TF))传说(“原始数据”,填充数据的)
使用移动中位数法
使用移动中位数填充缺失的数值数据。
创建一个样本点的向量x
一个数据向量一个
包含缺失值的。
x = linspace (0, 10200);A = sin(x) + 0.5*(rand(size(x))-0.5);A([1:10 randi([1长度(x)],1,50)]) = NaN;
取代南
值一个
使用窗口长度为10的移动中位数,并绘制原始数据和填充数据。
F = fillmissing (,“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
对于第一个差距是:
x = 0.3
ts = 30
Tq = [40 50]
第二个间隙的函数句柄输入值是:
x = 0.7
ts = 70
tq = 80
绘制原始数据和填充数据。
散射(t)在散射(t (TF), F (TF))
函数ts, y = forwardfill (xs tq, n)使用之前的非缺失值填充缺失空白中的n个值y =南(1,元素个数(tq));y (1: min(元素个数(tq), n)) = x;结束
缺少端点的矩阵
创建一个包含缺失条目的矩阵,并使用线性插值每次填充列(二次元)一行。对于每一行,用该行中最接近的非缺失值填充前尾缺失值。
A =[南南5 3南5 7南9南;8 9南1 4 5南5南5;NaN 4 9 8 7 2 4 1 1 NaN]
一个=3×10南南5 3南5 7南9南8 9南1 4 5南5南5南5南4 9 8 7 2 4 1 1南
F = fillmissing (,“线性”,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
具有多种数据类型的表
填充具有不同数据类型的表变量的缺失值。
创建一个包含以下变量的表分类
,双
,字符
数据类型。
一个=表(分类({“阳光”;“多云”;”}), 66;南;54) {”;“N”;“Y”}, [37;39;南),...“VariableNames”, {“描述”“温度”“雨”“湿度”})
一个=3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云南{' N '} 39 <定义> 54 {Y} NaN
用前一个条目的值替换所有缺失的条目。中没有之前的元素雨
变量,则不替换缺失的字符向量。
F = fillmissing (,“以前”)
F =3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云66 {' N '} 39多云54 {Y} 39
取代南
值温度
而且湿度
变量一个
用0。
F = fillmissing (,“不变”0,“DataVariables”, {“温度”,“湿度”})
F =3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云0 39 {' N '} <定义> 54 {Y} 0
另外,使用isnumeric
函数标识要操作的数值变量。
F = fillmissing (,“不变”0,“DataVariables”@isnumeric)
F =3×4表描述温度雨湿度 ___________ ___________ __________ ________ 阳光66 {0 x0 char} 37多云0 39 {' N '} <定义> 54 {Y} 0
现在填充缺失的值一个
为每个表变量指定一个常量,这些变量包含在单元格数组中。
F = fillmissing (,“不变”,{分类({“没有”}), 1000,“未知”1000})
F =3×4表描述温度雨湿度 ___________ ___________ ___________ ________ 阳光66{‘未知’}37多云1000 {' N '} 39没有54 1000 {Y}
指定最大的差距
创建一个时间矢量t
以秒和一个对应的数据向量一个
包含南
值。
T = seconds([2 4 8 17 98 134 256 311 1001]);A =[1 3 23南南南100南233];
只填写缺失的值一个
对应的最大间隙大小为250秒。因为秒差大于250秒,所以南
值未填充。
F = fillmissing (,“线性”,“SamplePoints”t“MaxGap”秒(250))
F =1×91.000 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南南50 60 70南90 100]
,窗口长度gapwindow = 3
指定第一个间隙窗口为[20南南50]
那fillfun
操作以计算填充值。第二个缺口就是fillfun
操作是(90年70年南)
.
当一个
是时间表还是SamplePoints
指定为datetime
或持续时间
向量,gapwindow
必须符合类型持续时间
.
昏暗的
- - - - - -操作维度
正整数标量
操作尺寸,指定为正整数标量。如果没有指定值,则默认为大小不等于1的第一个数组维度。
考虑一个米
——- - - - - -n
输入矩阵,一个
:
fillmissing(方法1)
的每列数据填充缺失值一个
并返回一个米
——- - - - - -n
矩阵。fillmissing(方法2)
的每一行数据填充缺失的值一个
并返回一个米
——- - - - - -n
矩阵。
对于表或时间表输入数据,昏暗的
不支持,操作将分别沿着每个表或时间表变量进行。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:fillmissing (T)方法,“SamplePoints”、“Var1”)
SamplePoints
- - - - - -采样点
向量|表变量名|标量|函数处理|表格vartype
下标
样本点,指定为样本点值的向量,如果输入数据是表格,则指定为下表中的选项之一。样本点代表x-数据的坐标轴位置,并且必须排序并包含唯一的元素。采样点不需要均匀采样。向量[1 2 3…]
是默认的。
当输入数据是一个表时,您可以使用以下选项之一将样本点指定为表变量:
表格输入选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或标量字符串 |
|
标量变量指数 | 标量表变量索引 |
|
逻辑向量 | 一个逻辑向量,其每个元素都对应一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄 |
|
vartype 下标 |
方法生成的表下标 |
|
请注意
当输入数据为时,不支持此名称-值参数时间表
.时间表使用行时间的向量作为样本点。要使用不同的样本点,必须编辑时间表,使行时间包含所需的样本点。
移动窗口是相对于样本点定义的。例如,如果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
值指示要填充的输入表变量。
表中未指定的其他变量DataVariables
传递到输出而不被填充。
选项 | 描述 | 例子 |
---|---|---|
变量名 | 指定单个表变量名的字符向量或字符串标量 |
|
变量名的向量 | 字符向量或字符串数组的单元格数组,其中每个元素都是表变量名 |
|
可变指标的标量或向量 | 表变量索引的标量或向量 |
|
逻辑向量 | 一个逻辑向量,其每个元素都对应一个表变量,其中 |
|
函数处理 | 接受表变量作为输入并返回逻辑标量的函数句柄 |
|
vartype 下标 |
方法生成的表下标 |
|
例子:fillmissing (T,“线性”,“DataVariables”,(“Var1”“Var2”“Var4”])
ReplaceValues
- - - - - -替换值指标
真正的
或1
(默认)|假
或0
替换值指示符,指定为这些值之一时一个
表格或时间表:
真正的
或1
-将包含缺失项的输入表变量替换为填充的表变量。假
或0
-用所有检查过的表变量添加输入表。填充附加变量中缺失的条目。
对于矢量、矩阵或多维数组输入数据,ReplaceValues
不支持。
例子:fillmissing (T,‘以前’,‘ReplaceValues’,假)
EndValues
- - - - - -处理端点的方法
“extrap”
(默认)|“以前”
|“下一个”
|“最近的”
|“没有”
|标量
处理端点的方法,指定为“extrap”
,“以前”
,“下一个”
,“最近的”
,“没有”
,或常数标量值。端点填充方法根据以下定义处理前导和尾随缺失值:
方法 | 描述 |
---|---|
“extrap” |
一样方法 |
“以前” |
以前的常数的值 |
“下一个” |
下一个常数的值 |
“最近的” |
常数的值 |
“没有” |
没有填写价值 |
标量 | 恒定值(数值,持续时间 ,datetime 数据类型) |
MissingLocations
- - - - - -知道失踪的指标
向量|矩阵|多维数组
已知的缺失指标,指定为大小相同的逻辑向量、矩阵或多维数组一个
.指示器元素可以是真正的
的相应位置上的缺失值一个
或假
否则。
数据类型:逻辑
MaxGap
- - - - - -要填充的最大间隙大小
数字标量|持续时间
标量|calendarDuration
标量
要填充的最大间隙大小,指定为数值标量,持续时间
标量或calendarDuration
标量。间隙是连续缺失值的簇,其大小是间隙周围非缺失值之间的距离。间隙大小是相对于样本点计算的。小于或等于最大间隙大小的间隙被填充,大于最大间隙大小的间隙不被填充。
例如,考虑向量y =[25南南100]
使用默认的样本点[1 2 3 4]
.矢量中的间隙大小是由样本点计算出来的4 - 1 = 3
,所以MaxGap
的价值2
不更改所缺少的值MaxGap
的价值3.
填充缺失的值。
对于数据开头或结尾缺少值:
在输入数据的开始或结束处的单个缺失值的空白大小为0,并且总是被填充。
在输入数据的开始或结束处出现的缺失值簇并没有完全被非缺失值包围,因此使用最近的现有样本点计算间隙大小。对于默认的样本点
1: N
,这产生的间隙大小比在数据中间出现相同的集群时小1。
输出参数
F
——填充数据
向量|矩阵|多维数组|表|时间表
已填充的数据,作为向量、矩阵、多维数组、表或时间表返回。
F
是一样的尺寸吗一个
除非ReplaceValues
是假
.的值ReplaceValues
是假
,则宽度F
输入数据宽度与指定的数据变量数量的和。
特遣部队
-填充数据指示器
向量|矩阵|多维数组
已填充的数据指示器,作为向量、矩阵或多维数组返回。特遣部队
是一个逻辑数组,其中1 (真正的
)对应于已填入的条目F
先前丢失的和0 (假
)对应未更改的条目。
特遣部队
是一样的尺寸吗F
.
数据类型:逻辑
提示
对于非字符向量的结构数组或单元格数组的输入数据,
fillmissing
不填充任何条目。若要填充结构数组中缺失的项,请应用fillmissing
的结构中的每个字段structfun
函数。若要填充非字符向量的单元格数组中的缺失项,请应用fillmissing
单元格数组中的每个单元格cellfun
函数。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
的
样条的
而且“makima”
方法不受支持。不支持函数句柄填充方法。
的
MaxGap
,SamplePoints
,MissingLocations
不支持名称-值参数。的
DataVariables
名称-值参数不能指定函数句柄。的
EndValues
名称-值参数只能指定“extrap”
.的语法
fillmissing (movmethod,窗口)
不支持一个
是一张长长的时间表。的语法
fillmissing(“常数”,v)
必须为?指定标量值v
.的语法
fillmissing (___)
不支持字符向量变量时一个
是一张高高的桌子或高高的时间表。
有关更多信息,请参见高大的数组.
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
的
MaxGap
而且ReplaceValues
不支持名称-值参数。的
“makima”
选项不支持。当
SamplePoints
价值类型datetime
或者输入的数据是带有时间表的datetime
行次,只有方法“不变”
,“movmean”
,“movmedian”
都受支持。函数的句柄输入
fillmethod
参数不受支持。
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
介绍了R2016bR2022b:字符数组没有标准缺失值
字符数组没有标准缺失值的默认定义。因此,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命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。