データ数の圧縮,リサンプリング,補間について

조회 수: 17 (최근 30일)
ryu
ryu 2022년 4월 27일
댓글: ryu 2022년 5월 1일
あるデータ数(例:40972)を圧縮してあるデータ数(例:10000個のデータ)にしたい場合はresample関数を使用するのが正しいのでしょうか。しかしresample関数ではリサンプルする周波数は決められると思いますが,その結果何個のデータになるのかは決められないため,指定したデータ数に圧縮することができません。良い方法をご存知の方がいらっしゃいましたら教えていただけないでしょうか。

채택된 답변

Akira Agata
Akira Agata 2022년 4월 28일
時系列信号のリサンプリングに関するご質問と想定して回答します。
ご理解のとおり、resample 関数を使ってこの課題を解決するには、目標のサンプル点数に対応するサンプリング周波数を求める必要があります。
もっと簡単な別の方法として、関数 interp1 を使う方法はいかがでしょうか?
以下に例を示します(簡単のため、以下の例ではサンプル数100の元データを、サンプル数30に圧縮する場合を想定しています)。
% データ数100の元データ
x = linspace(0, 2*pi, 100);
y = sin(x);
% min(x) ~ max(x) 区間内の 30点で内挿
xq = linspace(0, 2*pi, 30);
yq = interp1(x, y, xq, 'spline');
% 確認
figure
plot(x, y, '.')
hold on
plot(xq, yq, 'o-')
legend({'元の100点', '内挿した30点'},...
'FontSize', 12)
  댓글 수: 3
Akira Agata
Akira Agata 2022년 4월 30일
直観的にそう思ってしまいがちですが、厳密には少し違います。
上記の例で、元のサンプリング周波数を 、内挿後のサンプリング周波数を とします。
まず、内挿前は100個のサンプル点によって 0 ~ の区間を 99 個の小区間に分割しているので、
となります。同様に、内挿後は 0 ~ の区間を 29 個の小区間に分割しているので、
となります。
つまり、内挿後は元の 倍のサンプリング周波数でリンサンプリングしたことになります。
ryu
ryu 2022년 5월 1일
回答ありがとうございます。
わかりやすい説明で理解することができました。
今後ともよろしくお願いいたします。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!