fillmissing
欠損エントリを埋める
構文
説明
は、配列または table の欠損エントリを定数値 F = fillmissing(A,'constant',v)v で埋めます。A が行列または多次元配列の場合、v はスカラーまたはベクトルのいずれかにすることができます。v がベクトルの場合、各要素は A の対応する列の埋め込み値を指定します。A が table または timetable の場合、v は要素に各 table 変数の埋め込み値が含まれる cell 配列にすることもできます。
欠損値は、A のデータ型にしたがって定義されます。
NaN—double、single、durationおよびcalendarDurationNaT—datetime<missing>—string<undefined>—categorical{''}— 文字ベクトルのcell
A が table の場合、各変数のデータ型がその変数の欠損値を定義します。
fillmissing の機能を対話的に使用するには、ライブ スクリプトに [欠損データの削除] タスクを追加します。
は、名前と値の引数を 1 つ以上使用して、欠損値を埋めるための追加パラメーターを指定します。たとえば、F = fillmissing(___,Name,Value)t が時間値のベクトルである場合、fillmissing(A,'linear','SamplePoints',t) は t の時間を基準にして A のデータを内挿します。
例
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 列の行列を作成します。1 列目で 100、2 列目で 1000 を使用して NaN を埋めます。
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 および logical ベクトル 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 に、欠損ギャップの前では 1 つのデータ点を考慮し、ギャップの後ではデータ点を考慮しないように指示します。前の非欠損値がギャップの 10 単位前の位置にあるためです。最初のギャップに対して fillmissing で決定される関数ハンドルの入力値は次のとおりです。
xs = 0.3ts = 30tq = [40 50]
2 番目のギャップに対する関数ハンドルの入力値は次のとおりです。
xs = 0.7ts = 70tq = 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
欠損エントリを含む行列を作成し、線形内挿を使用して、一度に 1 行ずつ列 (2 番目の次元) を埋めます。各行の先頭および末尾の欠損値は、その行で最も近い非欠損値で埋めます。
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
データ型が異なる table 変数の欠損値を埋めます。
categorical、double、および char のデータ型を含む複数の変数をもつ table を作成します。
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 {0×0 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 {0×0 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 {0×0 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 {0×0 char} 37
Cloudy 0 {'N' } 39
<undefined> 54 {'Y' } 0
次に、cell 配列に含まれる各 table 変数の指定された定数で 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];
最大ギャップ サイズ 250 秒に対応する A の欠損値のみを埋めます。2 番目のギャップは 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 値を含む行列を作成してから、3 番目の行の欠損エントリの位置を示す logical ベクトルを作成します。
A = [1 3 9 3; -5 1 7 2; -1 1 7 NaN; 12 1 9 1]; m = isnan(A(3,:));
行間の距離を測定する 2 つのカスタム関数を定義します。
関数 d1 は、各座標ペア間の距離を合計して行間の距離を測定します。関数 dinf は、座標ペア間の最大距離を求めて行間の距離を測定します。
d1 = @(x,~) sum(abs(diff(x)),'omitnan'); dinf = @(x,isNaN) norm(diff(x(:,~isNaN(1,:))),'inf');
3 番目の行と他の 3 行のそれぞれとの間の d1 測定の距離を計算します。2 番目の行が最も近くなっています。
d1s = arrayfun(@(r) d1(A([r 3],:),m), setdiff(1:4,3))
d1s = 1×3
6 4 15
関数 fillmissing は 3 番目の行の NaN を 2 番目の行の対応する 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 測定の距離での同様の解析では、最初の行が 3 番目の行に最も近いとわかります。そこで、関数 fillmissing は 3 番目の行の 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 以降
table を作成し、-99 として定義されている欠損エントリを埋めます。埋める欠損エントリの位置を示す logical 変数 loc の table を作成します。次に、fillmissing で名前と値の引数 MissingLocations を使用して、既知の欠損エントリの位置を指定します。
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
入力引数
入力データ。ベクトル、行列、多次元配列、文字ベクトルの cell 配列、table、または timetable として指定します。
Aが timetable である場合は、table 値のみが埋められます。関連付けられた行時間のベクトルにNaT値またはNaN値が含まれる場合、fillmissingはエラーを生成します。行時間は一意で、昇順にリストされていなければなりません。Aが cell 配列、または cell 配列変数をもつ table の場合、fillmissingは cell 配列が文字ベクトルを含む場合のみ欠損要素が埋められます。
埋め込み定数。スカラー、ベクトル、または cell 配列として指定します。
Aが行列または多次元配列の場合、vには操作次元ごとに異なる埋め込み値を示すベクトルを指定できます。vの長さは、操作次元の長さと一致しなければなりません。Aが table または timetable の場合、vには変数ごとに異なる埋め込み値を示す、埋め込み値の cell 配列を指定できます。cell 配列内の要素数は、table 内の変数の数と一致しなければなりません。
埋め込みメソッド。次の値のいずれかとして指定します。
| メソッド | 説明 |
|---|---|
'previous' | 前の非欠損値 |
'next' | 次の非欠損値 |
'nearest' | x 軸で定義される最も近い非欠損値 |
'linear' | 近傍の非欠損値の線形内挿 (数値、duration、datetime のデータ型のみ) |
'spline' | 区分的 3 次スプライン内挿 (数値、duration、datetime のデータ型のみ) |
'pchip' | 形状維持区分的 3 次スプライン内挿 (数値、duration、datetime のデータ型のみ) |
'makima' | 修正 Akima 3 次エルミート内挿 (数値、duration、datetime のデータ型のみ) |
移動平均値または移動中央値を使用して欠損エントリを埋めるには、movmethod を使用します。
カスタム メソッドを使用して欠損エントリを埋めるには、fillfun を使用します。
欠損データを埋める移動メソッド。次の値のいずれかとして指定します。
| メソッド | 説明 |
|---|---|
'movmean' | 長さ window のウィンドウの移動平均値 (数値データ型のみ) |
'movmedian' | 長さ window のウィンドウの移動中央値 (数値データ型のみ) |
移動メソッドのウィンドウの長さ。正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラーまたは正の duration の 2 要素ベクトルとして指定します。ウィンドウは、サンプル点を基準にして定義されます。
window が正の整数スカラーである場合、ウィンドウは現在の要素を中心にして配置され、window-1 個の隣接する要素を含みます。window が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。
window が正の整数の 2 要素ベクトル [b f] である場合、ウィンドウには現在の要素、b 個前までの要素、f 個後までの要素が含まれます。
A が timetable であるか、SamplePoints が datetime ベクトルまたは duration ベクトルとして指定されている場合、ウィンドウは duration 型でなければなりません。
'knn' メソッドで平均を求める際に使用する最近傍の数。正の整数スカラーとして指定します。
例: @(xs,ts,tq) myfun(xs,ts,tq)
カスタム埋め込みメソッド。関数ハンドルとして指定します。有効な関数ハンドルには、次の 3 つの入力引数が含まれていなければなりません。
| 入力引数 | 説明 |
|---|---|
xs | 埋め込みに使用されるデータ値を含むベクトル。xs の長さは、指定されたウィンドウの長さと一致しなければなりません。 |
ts | 埋め込みに使用される値の位置を含むベクトル。ts の長さは、指定されたウィンドウの長さと一致しなければなりません。ts はサンプル点ベクトルのサブセットです。 |
tq | 欠損値の位置を含むベクトル。tq はサンプル点ベクトルのサブセットです。 |
関数は、tq と同じ長さのスカラーまたはベクトルを返さなければなりません。
カスタム埋め込み関数のギャップ ウィンドウの長さ。正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラーまたは正の duration の 2 要素ベクトルとして指定します。ギャップ ウィンドウは、サンプル点を基準にして定義されます。
埋め込みメソッドの関数ハンドル fillfun を指定する場合、gapwindow の値は、入力データの欠損値の各ギャップを囲む固定ウィンドウの長さを表します。埋め込み値は、fillfun でそのウィンドウの値を使用して計算されます。たとえば、既定のサンプル点 t = 1:10 とデータ A = [10 20 NaN NaN 50 60 70 NaN 90 100] の場合、ウィンドウの長さ gapwindow = 3 は、fillfun が埋め込み値を計算するために演算を行う最初のギャップ ウィンドウとして [20 NaN NaN 50] を指定します。fillfun が演算を行う 2 番目のギャップ ウィンドウは [70 NaN 90] です。
A が timetable であるか、SamplePoints が datetime ベクトルまたは duration ベクトルとして指定されている場合、gapwindow は duration 型でなければなりません。
操作次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。
m 行 n 列の入力行列 A を考えます。
fillmissing(A,method,1)は、Aの各列のデータに従って欠損値を埋め、m行n列の行列を返します。
fillmissing(A,method,2)は、Aの各行のデータに従って欠損値を埋め、m行n列の行列を返します。
入力データが table または timetable の場合、dim はサポートされず、演算は各 table 変数または timetable 変数に沿って個別に行われます。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: fillmissing(T,method,SamplePoints="Var1")
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。
例: fillmissing(T,method,"SamplePoints","Var1")
データ オプション
サンプル点。サンプル点のベクトル、または次の表のいずれかのオプション (入力データが table の場合) として指定します。サンプル点はデータの x 軸の位置を表し、並べ替える必要があり、一意の要素を含まなければなりません。サンプル点は等間隔でサンプリングされている必要はありません。既定の設定はベクトル [1 2 3 ...] です。
入力データが table の場合は、次のいずれかのオプションを使用して、サンプル点を table 変数として指定できます。
| インデックス方式 | 例 |
|---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
メモ
入力データが timetable の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように 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
演算の対象とする table 変数。次の表のオプションのいずれかとして指定します。DataVariables の値は、入力 table 内のどの変数を埋めるかを示します。
DataVariables で指定されていない table 内のその他の変数は、埋められずに出力に渡されます。
| インデックス方式 | 指定する値 | 例 |
|---|---|---|
変数名 |
|
|
変数インデックス |
|
|
関数ハンドル |
|
|
変数の型 |
|
|
例: fillmissing(T,'linear','DataVariables',["Var1" "Var2" "Var4"])
値置換インジケーター。A が table または timetable の場合に、次の値のいずれかとして指定します。
trueまたは1— 欠損エントリを含む入力 table 変数を、埋め込み済みの table 変数に置き換えます。falseまたは0— 欠損エントリをチェック済みのすべての table 変数を含む入力 table を追加します。追加される変数の欠損エントリは埋められます。
入力データがベクトル、行列、または多次元配列の場合、ReplaceValues はサポートされません。
例: fillmissing(T,'previous','ReplaceValues',false)
欠損値オプション
端点の処理メソッド。'extrap'、'previous'、'next'、'nearest'、'none'、または定数スカラー値として指定します。端点埋め込みメソッドは、次の定義に基づいて、先頭および末尾の欠損値を処理します。
| メソッド | 説明 |
|---|---|
'extrap' | method と同じ |
'previous' | 前の非欠損値 |
'next' | 次の非欠損値 |
'nearest' | 最も近い非欠損値 |
'none' | 埋め込み値なし |
| スカラー | 定数値 (数値、duration、datetime のデータ型のみ) |
既知の欠損エントリ インジケーター。logical ベクトル、行列、多次元配列、または logical 変数を含む table または timetable (R2024a 以降) として指定します。
MissingLocations が配列の場合は、A と同じサイズでなければなりません。MissingLocations が table または timetable の場合は、演算対象の入力 table 変数と同じサイズと名前をもつ logical 変数を含めなければなりません。
値が 1 (true) の要素は、A の欠損エントリの位置を示します。値が 0 (false) の要素は、非欠損エントリを示します。
データ型: logical | table | timetable
埋められる最大ギャップ サイズ。数値スカラー、duration スカラー、または calendarDuration スカラーとして指定します。ギャップは、そのサイズがギャップ周囲の非欠損値間の距離である連続欠損値のクラスターです。ギャップ サイズはサンプル点を基準にして計算されます。最大ギャップ サイズ以下のギャップが埋められ、ギャップ サイズより大きいギャップは埋められません。
たとえば、既定のサンプル点 [1 2 3 4] を使用したベクトル y = [25 NaN NaN 100] について考えます。ベクトルのギャップ サイズはサンプル点から 4 - 1 = 3 として計算されるため、2 の MaxGap 値は欠損値を変更せずに残しますが、3 の MaxGap 値は欠損値を埋めます。
データの先頭または末尾に欠損値がある場合、次のようになります。
入力データの先頭または末尾にある単一欠損値のギャップ サイズは 0 であり、常に埋められます。
入力データの先頭または末尾で発生する欠損値のクラスターは完全には非欠損値で囲まれないため、ギャップ サイズは最も近い既存のサンプル点を使用して計算されます。既定のサンプル点
1:Nの場合、同じクラスターがデータの中央で発生した場合よりも 1 つ小さいギャップ サイズが生成されます。
最近傍の行を検出する際に使用する距離関数。'euclidean' (ユークリッド距離)、'seuclidean' (スケーリングされたユークリッド距離)、または距離関数の関数ハンドルとして指定します。
距離関数の関数ハンドルを指定する場合は、その関数は次の条件を満たさなければなりません。
関数は、2 つの入力を受け入れなければなりません。
関数の最初の入力は、比較する 2 つのベクトルを含む 2 行の行列、table、または timetable でなければなりません。
関数の 2 番目の入力は、ベクトル内の欠損値の位置を示す logical 行列でなければなりません。2 番目の入力は、
~として指定して無視できます。関数は、
double型の実数のスカラー値として距離を返す必要があります。
例: fillmissing(A,'knn','Distance',@(x,~) sum(abs(diff(x)),'omitmissing'))
出力引数
埋め込まれたデータ。ベクトル、行列、多次元配列、table または timetable として返されます。
F は、ReplaceValues の値が false の場合を除き、A と同じサイズになります。ReplaceValues の値が false の場合、F の幅は入力データの幅と指定したデータ変数の数の合計となります。
埋め込まれたデータのインジケーター。ベクトル、行列または多次元配列として返されます。TF は logical 配列であり、1 (true) は元は欠損していた埋め込み済みの F の要素に対応し、0 (false) は未変更の要素に対応します。
TF は、F と同じサイズになります。
データ型: logical
ヒント
入力データが構造体配列、または文字ベクトル以外の cell 配列である場合、
fillmissingはいずれのエントリも埋めません。構造体配列内の欠損エントリを埋めるには、関数structfunを使用して、構造体の各フィールドにfillmissingを適用します。文字ベクトル以外の cell 配列の欠損エントリを埋めるには、関数cellfunを使用して、cell 配列の各 cell にfillmissingを適用します。
代替機能
拡張機能
fillmissing 関数は tall 配列をサポートしていますが、以下の使用上の注意および制限があります。
'spline'メソッドと'makima'メソッドはサポートされていません。関数ハンドルの埋め込みメソッドはサポートされません。
'knn'埋め込みメソッドおよび名前と値の引数Distanceはサポートされません。名前と値の引数
MaxGap、SamplePoints、およびMissingLocationsはサポートされません。名前と値の引数
DataVariablesでは関数ハンドルを指定できません。名前と値の引数
EndValuesには'extrap'のみを指定できます。名前と値の引数
MissingLocationsでは table または timetable を指定できません。Aが tall timetable の場合、構文fillmissing(A,movmethod,window)はサポートされません。構文
fillmissing(A,'constant',v)では、vにスカラー値を指定しなければなりません。Aが tall table または tall timetable である場合、構文fillmissing(A,___)では文字ベクトル変数がサポートされません。
詳細については、tall 配列を参照してください。
使用上の注意および制限:
名前と値の引数
MaxGapはサポートされていません。入力データの型が
datetimeまたはdurationの場合、'constant'がサポートされる唯一のメソッドです。SamplePoints値にdatetime型があるか、入力データがdatetime行時間をもつ timetable の場合、メソッド'constant'、'movmean'、'movmedian'のみがサポートされます。fillmethod引数の関数ハンドル入力はサポートされません。名前と値の引数
Distanceはサポートされていません。名前と値の引数
MissingLocationsでは table または timetable を指定できません。categorical 入力データの場合、埋め込み定数はデータのカテゴリのいずれかに対応しなければなりません。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
使用上の注意および制限:
'pchip'埋め込みメソッドはサポートされていません。移動ウィンドウ埋め込みメソッド
'movmean'および'movmedian'では、名前と値の引数SamplePointsはサポートされていません。'knn'埋め込みメソッドおよび名前と値の引数Distanceはサポートされません。名前と値の引数
MissingLocationsでは table または timetable を指定できません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
使用上の注意および制限:
'knn'埋め込みメソッドおよび名前と値の引数Distanceはサポートされません。名前と値の引数
MissingLocationsでは table または timetable を指定できません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2016b で導入fillmissing 関数で、埋め込みメソッドとして "linear" を指定する場合のパフォーマンスが向上しています。
たとえば、次のコードは、線形内挿を使用して 1000 要素の数値ベクトルの NaN 値を置き換えます。このコードは、以前のリリースよりパフォーマンスが約 2.2 倍高速化しました。
function timingTest A = rand(1000,1); idx = randperm(1000,50); A(idx) = NaN; for i = 1:2e4 F = fillmissing(A,"linear"); end end
おおよその実行時間は以下のとおりです。
R2024b: 0.84 秒
R2025a: 0.38 秒
このコードの時間測定では、Windows® 11、AMD EPYC 74F3 24 コア プロセッサ (3.19 GHz) 搭載のテスト システムで、関数 timeit を使用しました。
timeit(@timingTest)
埋め込みメソッドでは、C/C++ コード生成の入力値として "makima" がサポートされるようになりました。
"knn" メソッドで、ユークリッド距離関数またはスケーリングされたユークリッド距離関数を使用する場合の数値データのパフォーマンスが向上しました。この向上は、操作次元に沿った入力データの長さが短い場合に最も顕著になります。
たとえば、次のコードは、800 行 10 列の行列の NaN 値を最近傍行の対応する値の平均で埋めます。以前のリリースと比較して、このコードは約 2.8 倍速くなっています。
function timingTest A = rand(800,10); A(A>0.95) = NaN; for i = 1:1:2e2 F = fillmissing(A,"knn"); end end
おおよその実行時間は以下のとおりです。
R2024a: 1.00 秒
R2024b: 0.36 秒
このコードの時間測定では、Windows 11、AMD EPYC™ 74F3 24 コア プロセッサ (3.19 GHz) 搭載のテスト システムで、関数 timeit を使用しました。
timeit(@timingTest)
名前と値の引数 MissingLocations を、名前が入力 table に存在する logical 変数を含む table として指定して、欠損エントリの位置を定義します。以前は、MissingLocations はベクトル、行列または多次元配列としてしか指定できませんでした。
'knn' メソッドを使用して、最も近い行の対応する値を使用して欠損エントリを埋めます。オプションで、k 値を指定して、k 個の最も近い行の対応する値の平均を使用して欠損エントリを埋めることができます。
また、名前と値の引数 Distance を使用して、行間の距離を測定する際に使用するカスタム関数を指定することもできます。
文字配列には、標準欠損値の既定の定義がありません。このため、fillmissing は、空白文字の配列要素 (' ') を非欠損として扱います。たとえば、fillmissing(['a'; ' '],'previous') は ['a'; ' '] を返します。以前は、['a'; 'a'] を返していました。
空白文字の配列要素を欠損として扱うには、名前と値の引数 MissingLocations を使用します。たとえば、TF = ismissing(['a'; ' '],' ') を使用して空白文字の配列要素を検索し、F = fillmissing(['a'; ' '],'previous',MissingLocations=TF) のように既知の欠損インジケーターを指定します。
table または timetable 入力データの場合、欠損エントリをチェック済みのすべての table 変数を含む入力 table を追加します。追加される変数の欠損エントリは埋められます。名前と値の引数 ReplaceValues を false に設定することにより、table 変数を置き換えるのではなく追加します。
入力データが table の場合は、名前と値の引数 SamplePoints を使用して、サンプル点を table 変数として指定します。
fillfun を関数ハンドルとして指定し、カスタム メソッドにより欠損値を埋めます。
参考
関数
fillmissing2|ismissing|standardizeMissing|anymissing|rmmissing|filloutliers|isnan|missing|isnat|smoothdata
ライブ エディター タスク
アプリ
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.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の 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)
