SciPy を使用してMoku Laser Lock Box のカスタム フィルターを生成するにはどうすればよいですか?
レーザーロックボックスカスタムフィルター
- Moku:Lab
- Moku:Go
-
Moku:Pro
Moku:Proに関するよくある質問 Moku:Pro波形発生器 Moku:Proタイム&周波数アナライザ Moku:Proロジックアナライザ/パターンジェネレーター Moku:Proレレーザーロックボックス Moku:Proロックインアンプ Moku:Proスペクトラムアナライザ Moku:Proデータロガー Moku:Pro任意波形発生器 Moku:Proマルチ機器モード Moku:Pro位相計 Moku:Pro FIRフィルタービルダー Moku:Pro PIDコントローラー Moku:Proオシロスコープ Moku:Pro周波数応答アナライザ Moku:Proデジタルフィルターボックス
- Python API
- MATLAB API
- 任意波形発生器
- データロガー
- デジタルフィルターボックス
- FIR フィルタ ビルダー
- 周波数応答アナライザー
- レーザーロックボックス
- ロックインアンプ
- オシロスコープ
- 位相計
- PIDコントローラー
- スペクトラムアナライザー
- 時間と周波数アナライザー
- 波形発生器
- ロジックアナライザ/パターンジェネレーター
- マルチ機器モード
- Mokuクラウドコンパイル
- Mokuに関するよくある質問
- LabVIEW API
Moku Laser Lock Box は、セットポイントの上流、信号が高速パスと低速パスに分割される前にフィルターを実装します。ローパスとバンドストップの形状に加えて、ユーザー指定の係数を使用してカスタム フィルターを実現できます。
カスタム IIR フィルタは、最終出力ゲイン ステージを備えた 4 つのカスケード接続された直接形式 I の 2 次セクションとして実装されます。全体の伝達関数は次のように表されます。
フィルターを指定するには、フィルター係数を含むテキスト ファイルを提供する必要があります。ファイルには 1 行あたり 6 つの係数があり、各行は 1 つのステージを表します。出力スケーリングが必要な場合は、最初の行にこれを指定する必要があります。
g (オプション) | 7.8357416 | |||||
ステージ1 | 1.0000000 | 0.0044157 | 0.0088314 | 0.0044157 | -1.669291 | 0.969226 |
ステージ2 | 1.0000000 | 0.0472217 | 0.0944434 | 0.0472217 | -1.898858 | 0.9341904 |
ステージ3 | 1.0000000 | 0.0375275 | 0.0750551 | 0.0375275 | -1.9259771 | 0.9311308 |
⋮ |
s | ボ | b1 | b2 | 1 1 | 2 番 |
エントリはカンマで区切る必要があります。例:
7.8357416974, 1.0000000000、 0.0044157、 0.0088314、 0.0044157、 -1.669291、 0.969226、 1.0000000000、 0.0472217、 0.0944434、 0.0472217、 -1.898858、 0.9341904、 1.0000000000、 0.0375275、 0.0750551、 0.0375275、 -1.9259771、 0.9311308、
各係数は [-4.0, +4.0) の範囲内になければなりません。内部的には、これらは 45 ビットの小数部を持つ符号付き 48 ビット固定小数点数として表されます。出力スケーリングは最大 8,000,000 です。
フィルターのサンプル レートは、使用しているデバイスによって異なります。
Moku - 78.125 MHz
Moku - 31.25 MHz
Moku Go - 7.8125 MHz
フィルタ係数は、信号処理ツールボックスを使用して計算できます。たとえば、次のように scipy パッケージを使用して、 Moku Lab の 2 次バターワース フィルタの係数を生成できます。
から スキピー 輸入 信号
輸入 ナンピー 定義 gen_butterworth(コーナー周波数): 「」 生成する 係数 のために 1つの 2番 注文 バターワース ローパス フィルター。 コーナー 周波数 すべき なれ で の 範囲: 1 キロヘルツ < コーナー 頻度 < 31.25 MHz のために Moku 研究室。 「」 サンプルレート = 31.25e6 b、 1つの = シグナル.バター(2, コーナー周波数、 '低い'、 アナログ = 間違い、 フェス = サンプルレート 係数 = [[1.0, b[0], b[1]、 b[2]、 a[1]、 [2]]] numpy.savetxt("coeffs.txt", 係数、 区切り文字=",")
フィルター係数は API 呼び出しを使用して設定することもできます。set_custom_filter を参照してください。