fillmissing
欠損エントリを埋める
構文
説明
は、F = fillmissing(A,method)method で指定されたメソッドを使用して欠損エントリを埋めます。たとえば、fillmissing(A,"previous") は、A の各列の欠損エントリを前の非欠損エントリで埋めます。
欠損値は、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];
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— 埋められるギャップ内の値の数
function y = forwardfill(xs,ts,tq,n) y = NaN(1,numel(tq)); y(1:min(numel(tq),n)) = xs; end 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))
欠損エントリを含む行列を作成し、線形内挿を使用して、一度に 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、および string のデータ型を含む複数の変数をもつ 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 " " 37
Cloudy NaN "N" 39
<undefined> 54 "Y" NaN
すべての欠損エントリを前の要素の値で置き換えます。変数 Rain には前の要素がないため、欠損文字ベクトルは置き換えられません。
F = fillmissing(A,"previous")F=3×4 table
Description Temperature Rain Humidity
___________ ___________ ____ ________
Sunny 66 " " 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 " " 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 " " 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 " " 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 配列が文字ベクトルを含む場合のみ欠損要素が埋められます。
データ型: single | double | char | string | table | timetable | cell | categorical | datetime | duration | calendarDuration
埋め込み定数。A と同じ型のスカラー、ベクトル、または cell 配列として指定します。
Aが行列または多次元配列の場合、vには操作次元ごとに異なる埋め込み値を示すベクトルを指定できます。vの長さは、操作次元の長さと一致しなければなりません。Aが table または timetable の場合、vには変数ごとに異なる埋め込み値を示す、埋め込み値の cell 配列を指定できます。cell 配列内の要素数は、table 内の変数の数と一致しなければなりません。
埋め込みメソッド。次の表の値のいずれかとして指定します。
| メソッド | 説明 |
|---|---|
"previous" | 前の非欠損値 |
"next" | 次の非欠損値 |
"nearest" | x 軸で定義される最も近い非欠損値 |
"linear" | 隣接する非欠損値の線形内挿 |
"spline" | 区分的 3 次スプライン内挿 |
"pchip" | 形状維持区分的 3 次スプライン内挿 |
"makima" | 修正 Akima 3 次エルミート内挿 |
| 非欠損値の平均値 |
| 非欠損値の中央値 |
| 非欠損値の最頻値 |
埋め込みメソッドでは、操作次元に沿ってそれぞれの埋め込み値が計算されます。
一部の入力型では、これらの埋め込みメソッドのサブセットのみがサポートされます。
欠損データを埋める移動メソッド。次の値のいずれかとして指定します。
| メソッド | 説明 |
|---|---|
"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 | 埋め込みに使用されるデータ値を含む A と同じ型のベクトル。xs の長さは、指定されたウィンドウの長さと一致しなければなりません。 |
ts | 埋め込みに使用される値の位置を含むベクトル。ts の長さは、指定されたウィンドウの長さと一致しなければなりません。ts はサンプル点ベクトルのサブセットです。 |
tq | 欠損値の位置を含むベクトル。tq はサンプル点ベクトルのサブセットです。 |
関数は、tq と同じ長さで A と同じ型のスカラーまたはベクトルを返さなければなりません。
カスタム埋め込み関数のギャップ ウィンドウの長さ。正の整数スカラー、正の整数の 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")
データ オプション
サンプル点。サンプル点の値のベクトル、または table 変数として指定します。サンプル点はデータの x 軸の位置を表し、並べ替える必要があり、一意の要素を含まなければなりません。サンプル点は等間隔でサンプリングされている必要はありません。既定の設定はベクトル [1 2 3 ...] です。
入力データが配列の場合、SamplePoints を double、single、duration、または datetime のベクトルとして指定します。
入力データが table の場合は、次のいずれかのオプションを使用して、サンプル点を table 変数として指定できます。
| インデックス方式 | 例 |
|---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
メモ
入力データが timetable の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように timetable を編集しなければなりません。
移動ウィンドウは、サンプル点を基準にして定義されます。たとえば、t が入力データに対応する時間のベクトルである場合、fillmissing(rand(1,10),"movmean",3,SamplePoints=t) には t(i)-1.5 から t(i)+1.5 までの時間間隔を表すウィンドウがあります。
"knn" メソッドを指定する場合、SamplePoints はサポートされません。
例: 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"])
table または timetable の値を置き換えるかどうか。次の値のいずれかとして指定します。
trueまたは1— 欠損エントリを含む入力 table 変数を、埋め込み済みの table 変数に置き換えます。falseまたは0— 欠損エントリをチェック済みのすべての table 変数を含む入力 table を追加します。追加される変数の欠損エントリは埋められます。
入力データが配列の場合、ReplaceValues はサポートされません。
例: fillmissing(T,"previous",ReplaceValues=false)
欠損値オプション
先頭と末尾の欠損値の埋め込みメソッド。次のメソッドのいずれかとして指定します。
| メソッド | 説明 |
|---|---|
"extrap" | method で指定された埋め込みメソッドをすべての欠損値に使用 |
"previous" | 前の非欠損値で埋める |
"next" | 次の非欠損値で埋める |
"nearest" | 最も近い非欠損値で埋める |
"none" | 埋めない |
| スカラー | 数値、duration、または datetime のデータを定数値で埋める |
| ベクトル | 数値、duration、または datetime のデータを操作次元ごとに異なる値で埋める。このとき、ベクトルの長さは操作次元の長さと一致している必要があります。 |
"knn" メソッドを指定する場合、EndValues はサポートされません。
既知の欠損エントリ インジケーター。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 つ小さいギャップ サイズが生成されます。
"knn" メソッドを指定する場合、MaxGap はサポートされません。
最近傍の行を検出するための距離関数。"euclidean" (ユークリッド距離)、"seuclidean" (スケーリングされたユークリッド距離)、または距離関数の関数ハンドルとして指定します。
Distance を "euclidean" または "seuclidean" として指定する場合、入力データは次の条件を満たさなければなりません。
入力データは実数でなければなりません。
入力データの型は
doubleまたはsingleでなければなりません。複数の列を含む変数がある table または timetable の入力データはサポートされません。
距離関数の関数ハンドルを指定する場合は、その関数は次の条件を満たさなければなりません。
関数は、2 つの入力を受け入れなければなりません。
関数の最初の入力は、比較する 2 つのベクトルを含む 2 行の行列、table、または timetable でなければなりません。
関数の 2 番目の入力は、ベクトル内の欠損値の位置を示す logical 行列でなければなりません。2 番目の入力は、
~として指定して無視できます。関数は、
doubleに変換可能な実数のスカラー値として距離を返す必要があります。
Distance は、"knn" メソッドを指定する場合にのみサポートされます。
例: fillmissing(A,"knn",Distance=@(x,~) sum(abs(diff(x)),"omitmissing"))
出力引数
埋め込まれたデータ。ベクトル、行列、多次元配列、table または timetable として返されます。
F は、ReplaceValues の値が false の場合を除き、A と同じサイズになります。ReplaceValues の値が false の場合、F の幅は入力データの幅と指定したデータ変数の数の合計となります。
埋め込まれたデータのインジケーター。ベクトル、行列、または多次元配列として返されます。値 1 (true) は、元は欠損していた F の埋め込み済みのエントリに対応します。値 0 (false) は、変更されていないエントリに対応します。
TF は、F と同じサイズになります。
データ型: logical
詳細
次の表では、既定の等間隔のサンプル点ベクトル [1 2 3 4 5 6 7] におけるウィンドウ位置を示します。
説明 | ウィンドウ サイズと位置 | ウィンドウ内のサンプル点 | 図 |
|---|---|---|---|
スカラー ウィンドウ サイズの場合、ウィンドウの先頭のエッジは含まれず、ウィンドウの後方のエッジは含まれます。 |
現在のサンプル点 = 4 | 3、4、5 |
|
現在のサンプル点 = 4 | 2、3、4、5 |
| |
ベクトル ウィンドウ サイズの場合、先頭のエッジおよび後方のエッジは含まれます。 |
現在のサンプル点 = 4 | 2、3、4、5、6 |
|
入力データの端点に近いサンプル点について、最初のサンプル点から開始するか最後のサンプル点で終了するように |
現在のサンプル点 = 2 | 1、2、3、4 |
|
ヒント
入力データが構造体配列、または文字ベクトル以外の 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はサポートされていません。"mean"、"median"、および"mode"の埋め込みメソッドはサポートされていません。入力データの型が
datetimeまたはdurationの場合、"constant"がサポートされる唯一のメソッドです。SamplePointsの値がdatetime型であるか、入力データがdatetime行時間をもつ timetable の場合、メソッド"constant"、"movmean"、"movmedian"のみがサポートされます。fillmethod引数の関数ハンドル入力はサポートされません。名前と値の引数
Distanceはサポートされていません。名前と値の引数
MissingLocationsでは table または timetable を指定できません。categorical 入力データの場合、埋め込み定数はデータのカテゴリのいずれかに対応しなければなりません。
使用上の注意および制限については、「C/C++ コード生成」セクションを参照してください。GPU コード生成にも同様の、使用上の注意および制限が適用されます。
fillmissing 関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
fillmissing 関数は分散配列をサポートしますが、次の使用上の注意および制限があります。
"pchip"埋め込みメソッドはサポートされていません。移動ウィンドウ埋め込みメソッド
"movmean"および"movmedian"では、名前と値の引数SamplePointsはサポートされていません。"knn"埋め込みメソッドおよび名前と値の引数Distanceはサポートされません。名前と値の引数
MissingLocationsでは table または timetable を指定できません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
fillmissing 関数は分散配列をサポートしますが、次の使用上の注意および制限があります。
"knn"埋め込みメソッドおよび名前と値の引数Distanceはサポートされません。名前と値の引数
MissingLocationsでは table または timetable を指定できません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2016b で導入欠損エントリを操作次元に沿って非欠損値の平均値、中央値、または最頻値で埋めるには、"mean"、"median"、または "mode" の埋め込みメソッドを指定します。
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)


![Given elements 1 to 7, if the current sample point is 4, then the corresponding window spans the range [2, 6].](movwindow_vector.png)
![Given elements 1 to 7, if the current sample point is 2, then the corresponding window spans the range [1, 4].](movwindow_edgetruncate.png)
