データ数の圧縮,リサンプリング,補間について
92 ビュー (過去 30 日間)
古いコメントを表示
あるデータ数(例:40972)を圧縮してあるデータ数(例:10000個のデータ)にしたい場合はresample関数を使用するのが正しいのでしょうか。しかしresample関数ではリサンプルする周波数は決められると思いますが,その結果何個のデータになるのかは決められないため,指定したデータ数に圧縮することができません。良い方法をご存知の方がいらっしゃいましたら教えていただけないでしょうか。
0 件のコメント
採用された回答
Akira Agata
2022 年 4 月 28 日
時系列信号のリサンプリングに関するご質問と想定して回答します。
ご理解のとおり、resample 関数を使ってこの課題を解決するには、目標のサンプル点数に対応するサンプリング周波数を求める必要があります。
以下に例を示します(簡単のため、以下の例ではサンプル数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
2022 年 4 月 30 日
直観的にそう思ってしまいがちですが、厳密には少し違います。
上記の例で、元のサンプリング周波数を
、内挿後のサンプリング周波数を
とします。


まず、内挿前は100個のサンプル点によって 0 ~
の区間を 99 個の小区間に分割しているので、


となります。同様に、内挿後は 0 ~
の区間を 29 個の小区間に分割しているので、


となります。
つまり、内挿後は元の
倍のサンプリング周波数でリンサンプリングしたことになります。

その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で マルチレート信号処理 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!