レーザー ロック ボックスのローパス フィルターのコーナー周波数を低く設定できますか?
- 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:Labレーザー ロック ボックスは、2 段の 2 次 IIR フィルターを使用します。iPad アプリでは、フィルターはデフォルトで 1 段または 2 段の 2 次フィルターのみになります。計算中のビット数が限られているため、コーナーは約 1 kHz に制限されます。コーナー周波数が低いフィルターを取得するには、1 Hz 以下で動作する 2 段の 1 次フィルターを手動でロードできます。
カスタム フィルターを手動で読み込むには、フィルター コンフィギュレーターでカスタム フィルター タイプを選択し、次のスクリーンショットに示すように、SD カード、クリップボード、またはマイ ファイル内の .txt ファイルからフィルター係数を読み込みます。
.txt ファイルには、次の形式の 2 行 6 列が必要です。
s1 | 0.1 ... | b1.1 | b2.1 | a1.1 | a2.1 |
s2 | 0.2 倍 | b1.2 | b2.2 | a1.2 | a2.2 |
s1 と s2 はステージ 1 とステージ 2 の全体的なゲインを表します。bx.1 から ax.1 はステージ 1 のフィルター係数を表し、bx.2 から ax.2 はステージ 2 のフィルター係数を表します。これらのフィルター係数は、Python scipy または Signal Processing Toolbox を使用した MATLAB によって生成できます。ここでは、.txt ファイルを生成する Python スクリプトを提供します。
輸入 ナンピー として いいえ 輸入 matplotlib.pyplot として プラス から スキピー 輸入 信号 輸入 数学 定義 主要(): コーナー周波数 = 1 #で ヘルツ フィルタータイプ = 1 #1 のために 初め 注文 2段階、 2 のために 2番 注文 1段 generate_filter_array(コーナー周波数、フィルタータイプ、 プロット = 間違い) 定義 フィルター配列を生成します(コーナー周波数、フィルター順序、プロット): サンプルレート = 31.25e6 正規化されたコーナー = コーナー周波数 / (サンプルレート / 2) もし フィルター順序 == 1: b、 1つの = シグナル.バター(1, 正規化されたコーナー、 '低い'、 アナログ = 間違い) 1つの = np.append(a,0) b = np.append(b,0) gen_coe_array(b, 、 filter_order、str(コーナー周波数)+'Hz'+str(filter_order)+'order_filter') もし プロット == 真実: plot_fra(b,a,フィルター順序) エリフ フィルター順序 == 2: b、 1つの = シグナル.バター(2, 正規化されたコーナー、 '低い'、 アナログ = 間違い) gen_coe_array(b,a,filter_order,str(コーナー周波数)+'Hz'+str(filter_order)+'order_filter') もし プロット == 真実: plot_fra(b,a,フィルター順序) 定義 plot_fra(b,a,順序): w、 h = 信号.freqz(b, 、 働く = 2048*2048) もし 注文 == 1: h = np.multiply(h,h) plt.semilogx(w*sample_rate/math.pi/2, 20 * np.log10(np.absolute(h))) plt.title('バターワース フィルター 頻度 応答') plt.xlabel('頻度 [Hz]') plt.ylabel('振幅 [dB]') plt.grid(which='両方', 軸='両方') plt.show() 定義 gen_coe_array(b,a,順序,名前): もし 注文 == 1: 係数配列 = [[1.0, b[0], b[1]、 0, a[1]、 0], [1.0, b[0], b[1]、 0, a[1]、 0]] エリフ 注文 == 2: 係数配列 = [[1.0, b[0], b[1]、 b[2]、 a[1]、 a[2]]、 [1.0, 1.0、 0.0, 0.0, 0.0, 0.0]] np.savetxt(名前 +'.txt',係数配列, デリミタ = ',') もし __名前__ == '__主要__': 主要()