サンプルの一部で信号をシフト


9

サンプル時間が0.5マイクロ秒の信号があり、この信号をサンプル時間の一部、たとえば3ナノ秒だけシフトしたいと考えています。

フラクショナル遅延フィルタリング、およびFFTとIFFTを使用してそのような遅延を実行する方法について、いくつかのオンラインリソースを読みました。誰かが私にこれに関するいくつかの理論を指摘したり、それを実装する方法についてのアイデアを教えたりできますか?

整数サンプルの信号を定期的にシフトするために、必要なサンプル数だけ信号をシフトし、最初にゼロを追加することでこれを実装しました。このアプローチは正しいですか?

回答:


13

1996年にIEEE Signal Processing Magazineに掲載された優れた概要記事:単位遅延の分割:フラクショナル遅延フィルター設計用のツールがあります。これの良いところは、関連するMatlabファイルのセットも利用できることです。これらのルーチンを使用すると、このようなシステムを設計できます。

整数サンプルによるシフトに関しては、あなたがしたことは明らかに正しいです。


私は紙をざっと見ただけなので、これが明示的にそこにあるかどうかはわかりませんが、分数遅延は、n次導関数を任意の順序に一般化する分数導関数に関連しています。
soultrane

2

FFTタイプのソリューションを実行する以外に、補間を使用することもできます。適切な特定の種類の補間は、もちろん、ニーズに基づいています。線形補間は、以前はフランジエフェクトでうまく機能していましたが、走行距離はさまざまです。

線形補間が十分でない場合は、ラグランジュ補間も検討する価値があります。 http://blog.demofox.org/2015/07/08/lagrange-interpolation/


HermiteはLagrangeよりも優れているかもしれませんが、MATLAB(またはFIRフィルター設計プログラム)にアクセスできる場合は、「多相フィルターバンク」補間器を自分で設計できます。わずかな遅延。指定した非整数遅延に最も近い2つの離散非整数遅延を選択し、それらの間を線形補間します。
robert bristow-johnson 2015

0

これは、MATLABの 'delayseq'関数を使用して行うことができます。この関数は、小数サンプルの信号をシフトできます。シフトしたいサンプルの数、または時間の観点から、必要な遅延の量を書き込むことができます。ただし、注意すべき重要な点は、遅延した信号は元の信号と同じ長さであるため、信号を切り捨てない場合は、最初にゼロパディングを使用してからdelayseqを使用することです。 https://in.mathworks.com/help/phased/ref/delayseq.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.