smoothdata
ノイズの多いデータの平滑化
構文
説明
は、名前と値の引数を 1 つ以上使用して、平滑化に関する追加のパラメーターを指定します。たとえば、B
= smoothdata(___,Name,Value
)t
が時間値のベクトルである場合、smoothdata(A,'SamplePoints',t)
は t
の時間を基準にして A
のデータを平滑化します。
例
移動平均によるデータの平滑化
ノイズの多いデータを含むベクトルを作成し、移動平均を使用してデータを平滑化します。元のデータと平滑化後のデータをプロットします。
x = 1:100; A = cos(2*pi*0.05*x+2*pi*rand) + 0.5*randn(1,100); B = smoothdata(A); plot(x,A,'-o',x,B,'-x') legend('Original Data','Smoothed Data')
ノイズの多いデータの行列
ノイズの多い 3 つの信号を表す行をもつ行列を作成します。移動平均を使用して 3 つの信号を平滑化し、平滑化後のデータをプロットします。
x = 1:100; s1 = cos(2*pi*0.03*x+2*pi*rand) + 0.5*randn(1,100); s2 = cos(2*pi*0.04*x+2*pi*rand) + 0.4*randn(1,100) + 5; s3 = cos(2*pi*0.05*x+2*pi*rand) + 0.3*randn(1,100) - 5; A = [s1; s2; s3]; B = smoothdata(A,2); plot(x,B(1,:),x,B(2,:),x,B(3,:))
ガウス フィルター
ガウス加重移動平均フィルターを使用して、ノイズの多いデータのベクトルを平滑化します。フィルターで使用したウィンドウの長さを表示します。
x = 1:100;
A = cos(2*pi*0.05*x+2*pi*rand) + 0.5*randn(1,100);
[B,window] = smoothdata(A,'gaussian');
window
window = 4
長さ 20 の大きいウィンドウを使用して元のデータを平滑化します。両方のウィンドウの長さについて、平滑化後のデータをプロットします。
C = smoothdata(A,'gaussian',20); plot(x,B,'-o',x,C,'-x') legend('Small Window','Large Window')
NaN
をもつベクトル
NaN
値を含むノイズの多いベクトルを作成し、NaN
を無視してデータを平滑化します。これは既定の設定です。
A = [NaN randn(1,48) NaN randn(1,49) NaN]; B = smoothdata(A);
NaN
値を含むデータを平滑化します。NaN
を含むウィンドウでの平均値は NaN
です。
C = smoothdata(A,'includenan');
B
と C
の平滑化後のデータをプロットします。
plot(1:100,B,'-o',1:100,C,'-x') legend('Ignore NaN','Include NaN')
サンプル点をもつデータの平滑化
時間ベクトル t
に対応するノイズの多いデータのベクトルを作成します。t
の時間を基準としてデータを平滑化し、元のデータと平滑化後のデータをプロットします。
x = 1:100; A = cos(2*pi*0.05*x+2*pi*rand) + 0.5*randn(1,100); t = datetime(2017,1,1,0,0,0) + hours(0:99); B = smoothdata(A,'SamplePoints',t); plot(t,A,'-o',t,B,'-x') legend('Original Data','Smoothed Data')
入力引数
A
— 入力データ
ベクトル | 行列 | 多次元配列 | table | timetable
入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。A
が table または timetable の場合、変数を数値にするか、名前と値の引数 DataVariables
を使用して数値変数を明示的にリストしなければなりません。変数の指定は、非数値変数も含んでいる table を扱うする際に便利です。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| table
| timetable
複素数のサポート: あり
dim
— 操作次元
正の整数スカラー
操作次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。
m
行 n
列の入力行列 A
を考えます。
smoothdata(A,1)
は、A
の各列のデータを平滑化し、m
行n
列の行列を返します。smoothdata(A,2)
は、A
の行のデータを平滑化し、m
行n
列の行列を返します。
入力データが table または timetable の場合、dim
はサポートされず、演算は各 table 変数または timetable 変数に沿って個別に行われます。
method
— 平滑化法
'movmean'
(既定値) | 'movmedian'
| 'gaussian'
| 'lowess'
| 'loess'
| 'rlowess'
| 'rloess'
| 'sgolay'
平滑化法。以下の値のいずれかとして指定します。
'movmean'
—A
の各ウィンドウの移動平均。この方法は、データの周期的なトレンドを低減するのに便利です。'movmedian'
—A
の各ウィンドウの移動中央値。この方法は、外れ値が存在する場合にデータの周期的なトレンドを低減するのに便利です。'gaussian'
—A
の各ウィンドウのガウス加重移動平均。'lowess'
—A
の各ウィンドウの線形回帰。この方法は計算量が多くなる場合がありますが、不連続点は少なくなります。'loess'
—A
の各ウィンドウの 2 次回帰。この方法は'lowess'
より計算量がやや多くなります。'rlowess'
—A
の各ウィンドウのロバスト線形回帰。この方法は'lowess'
より計算量が多くなりますが、外れ値に対してよりロバストになります。'rloess'
—A
の各ウィンドウのロバスト 2 次回帰。この方法は'loess'
より計算量が多くなりますが、外れ値に対してよりロバストになります。'sgolay'
— Savitzky-Golay フィルター。A
の各ウィンドウで近似される 2 次多項式に従って平滑化します。この方法は、データが急速に変動する場合に他の方法より効果的です。
window
— ウィンドウの長さ
正の整数スカラー | 正の整数の 2 要素ベクトル | 正の duration スカラー | 正の duration の 2 要素ベクトル
ウィンドウの長さ。正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラーまたは正の duration の 2 要素ベクトルとして指定します。
window
が正の整数スカラーである場合、ウィンドウは現在の要素を中心にして配置され、window-1
個の隣接する要素を含みます。window
が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。
window
が正の整数の 2 要素ベクトル [b f]
である場合、ウィンドウには現在の要素、b
個前までの要素、f
個後までの要素が含まれます。
A
が timetable である場合、または SamplePoints
が datetime
または duration
ベクトルとして指定されている場合、window
は duration
型でなければならず、ウィンドウはサンプル点を基準に計算されます。
ウィンドウの長さが出力引数としても指定されている場合、出力値は入力値と一致します。
nanflag
— NaN
の条件
'omitnan'
(既定値) | 'includenan'
NaN
の条件。次の値のいずれかとして指定します。
'omitnan'
— 入力のNaN
値を無視します。ウィンドウがすべてのNaN
値を含む場合、smoothdata
はNaN
を返します。'includenan'
— 各ウィンドウで計算する場合にNaN
も対象にします。この場合、結果はNaN
となります。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: smoothdata(A,'SmoothingFactor',0.5)
SamplePoints
— サンプル点
ベクトル | table 変数名 | スカラー | 関数ハンドル | table vartype
添字
サンプル点。サンプル点のベクトル、または次の表のいずれかのオプション (入力データが table の場合) として指定します。サンプル点はデータの x 軸の位置を表し、並べ替える必要があり、一意の要素を含まなければなりません。サンプル点は等間隔でサンプリングされている必要はありません。既定の設定はベクトル [1 2 3 ...]
です。
入力データが table の場合は、次のいずれかのオプションを使用して、サンプル点を table 変数として指定できます。
table 入力のオプション | 説明 | 例 |
---|---|---|
変数名 | 単一の table 変数名を指定する文字ベクトルまたはスカラー string |
|
変数インデックスのスカラー | table 変数のインデックスのスカラー |
|
logical ベクトル | 各要素が table 変数に対応する logical ベクトル (対応する変数をサンプル点として指定する場合は |
|
関数ハンドル | 入力として table 変数をとり、1 つの table 変数のみを |
|
vartype 添字 | 1 つの変数のみに対して添字を返す関数 |
|
メモ
入力データが timetable
の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように timetable を編集しなければなりません。
移動ウィンドウは、サンプル点を基準にして定義されます。たとえば、t
が入力データに対応する時間のベクトルである場合、smoothdata(rand(1,10),3,'SamplePoints',t)
には t(i)-1.5
から t(i)+1.5
までの時間間隔を表すウィンドウがあります。
サンプル点ベクトルのデータ型が datetime
または duration
である場合、移動ウィンドウの長さの型は duration
でなければなりません。
例: smoothdata(A,'SamplePoints',0:0.1:10)
例: smoothdata(T,'SamplePoints',"Var1")
データ型: double
| single
| datetime
| duration
DataVariables
— 演算の対象とする table 変数
table 変数名 | スカラー | ベクトル | cell 配列 | 関数ハンドル | table vartype
添字
演算の対象とする table 変数。次の表のオプションのいずれかとして指定します。DataVariables
の値は、入力 table のどの変数を平滑化するかを示します。
DataVariables
で指定されていない table 内の他の変数は、平滑化されずに出力に渡されます。
オプション | 説明 | 例 |
---|---|---|
変数名 | 単一の table 変数名を指定する文字ベクトルまたは string スカラー |
|
変数名のベクトル | 各要素が table 変数名である、文字ベクトルの cell 配列または string 配列 |
|
変数インデックスのスカラーまたはベクトル | table 変数インデックスのスカラーまたはベクトル |
|
logical ベクトル | 各要素が table 変数に対応する logical ベクトル。 |
|
関数ハンドル | 入力として table 変数をとり、logical スカラーを返す関数ハンドル |
|
vartype 添字 | 関数 |
|
例: smoothdata(T,'DataVariables',["Var1" "Var2" "Var4"])
ReplaceValues
— 値置換インジケーター
true
または 1
(既定値) | false
または 0
値置換インジケーター。A
が table または timetable の場合に、次の値のいずれかとして指定します。
true
または1
— 入力 table 変数を、平滑化されたデータを含む table 変数に置き換えます。false
または0
— 入力 table 変数に、平滑化されたデータを含む table 変数を追加します。
入力データがベクトル、行列、または多次元配列の場合、ReplaceValues
はサポートされません。
例: smoothdata(T,'ReplaceValues',false)
SmoothingFactor
— ウィンドウ サイズ係数
0 から 1 の範囲のスカラー
ウィンドウ サイズ係数。0 から 1 の範囲のスカラーとして指定します。通常、SmoothingFactor
の値でヒューリスティックなウィンドウ サイズをスケーリングすることにより、平滑化のレベルを調整します。値が 0 に近いと、移動ウィンドウの長さは小さくなり、平滑化が小さくなります。値が 1 に近いと、移動ウィンドウの長さは大きくなり、平滑化が大きくなります。ヒューリスティックなウィンドウ サイズを決定する基になる入力データによっては、smoothdata
で使用されるウィンドウ サイズに SmoothingFactor
の値が大きく影響しない場合もあります。
SmoothingFactor
は既定で 0.25 であり、window
が指定されていない場合にのみ指定できます。
Degree
— Savitzky-Golay 次数
非負の整数
Savitzky-Golay 次数。非負の整数として指定します。この名前と値の引数は、指定された平滑化法が 'sgolay'
である場合にのみ指定できます。Degree
の値は、各ウィンドウ内のデータを近似する Savitzky-Golay フィルターの多項式の次数に対応し、既定値は 2 です。
サンプル点が一様な場合、Degree
の値はウィンドウの長さより小さくなければなりません。サンプル点が一様でない場合、この値はどのウィンドウの最大点数よりも小さくなければなりません。
出力引数
B
— 平滑化されたデータ
ベクトル | 行列 | 多次元配列 | table | timetable
平滑化されたデータ。ベクトル、行列、多次元配列、table、または timetable として返されます。
B
は、ReplaceValues
の値が false
の場合を除き、A
と同じサイズになります。ReplaceValues
の値が false
の場合、B
の幅は入力データの幅と指定したデータ変数の数の合計となります。
window
— ウィンドウの長さ
正の整数スカラー | 正の整数の 2 要素ベクトル | 正の duration スカラー | 正の duration の 2 要素ベクトル
ウィンドウの長さ。正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラーまたは正の duration の 2 要素ベクトルとして返されます。
入力引数として window
が指定されている場合、出力値は入力値と一致します。入力引数として window
が指定されていない場合、この値は入力データに基づいて smoothdata
により経験則的に決定されるスカラーです。
アルゴリズム
平滑化法のウィンドウ サイズが指定されていない場合、smoothdata
は経験則に基づいて既定のウィンドウ サイズを計算します。平滑化係数 τ について、経験則により入力データのエネルギーの約 100*τ パーセントを減衰する移動平均ウィンドウ サイズを推定します。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
tall timetable はサポートされていません。
'rlowess'
メソッドと'rloess'
メソッドはサポートされていません。複数の出力はサポートされません。
ウィンドウ サイズを指定しなければなりません。ウィンドウ サイズの自動選択はサポートされていません。
名前と値の引数
SamplePoints
およびSmoothingFactor
はサポートされません。DataVariables
の値を関数ハンドルにすることはできません。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
名前と値の引数
ReplaceValues
はサポートされていません。dim
は定数でなければなりません。複素数入力
A
については、window
引数が指定されなければなりません。可変サイズの
window
引数はサポートされません。固定サイズのコード生成については、
A
を除くすべての入力引数が定数でなければなりません。datetime
SamplePoints
値または datetimeRowTimes
を含む timetable 入力データについては、ウィンドウ サイズが指定されなければなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2017a で導入R2022a: 平滑化された値の追加
入力データが table または timetable の場合は、名前と値の引数 ReplaceValues
を false
に設定することにより、平滑化されたデータを含む table 変数を入力 table 変数に追加します。変数の置き換えは行いません。
R2021b: table 変数としてのサンプル点の指定
入力データが table の場合は、名前と値の引数 SamplePoints
を使用して、サンプル点を table 変数として指定します。
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)