ユニット 3 / 12

信号処理: フィルター、サンプリング、周波数分析

利益:

  • AI サポートによるサンプリング、ナイキスト、エイリアシングの概念を正しく構築して適用する能力
  • FFT、フィルター設計、ウィンドウ処理のステップを AI を使用してドラフト コードと計算に変換する機能
  • AIによる信号処理結果を基準信号で検証、ユニット制御、計測が可能

信号処理はエレクトロニクスおよび通信工学の中核であり、電圧波、録音、センサーの読み取り、または無線信号を取得し、その中の情報を抽出し、ノイズを除去して変換する技術です。この単元では、AI を使用して信号処理の概念を学習し、フィルターと変換の計算を構築し、Python コードで分析を実行する方法を学びます。ただし、最初から警告があります。信号処理における小さな概念的エラー (間違ったサンプリング周波数、スキップされたウィンドウ処理、干渉ユニット) によって、結果は完全かつ静かに歪められます。グラフは依然として良好に見えますが、それは間違っています。そのため、AI が生成するすべての結果を既知の基準信号とユニット制御に対してテストすることが不可欠です。

サンプリングとナイキスト: すべてはここから始まります

アナログ信号(連続波)をコンピュータで処理するには、一定の間隔で信号を計測し、数値に変換します。これをサンプリングといいます。これは、1 秒間に何個のサンプルを取得するかというサンプリング周波数 (fs、単位 Hz) です。ナイキスト基準では、信号を正確に復元するには、サンプリング周波数が信号の最高周波数の少なくとも 2 倍である必要があると規定されています。この条件が満たされない場合、高周波が低周波のように見え始めます。これはエイリアシングと呼ばれ、これら 2 つの状況を区別できないため、データは永久に破損します。

AI はこの概念を非常によく説明しており、例を挙げて実証できます。ただし、信号の実際の帯域幅はどれくらいか、アンチエイリアシング アナログ フィルターはあるか、ADC (アナログ - デジタル コンバーター: アナログ信号を数値に変換するチップ) が実際に動作する速度はどれくらいかなど、サンプリング周波数を選択するときに決定します。 AI はサンプリング周波数を「提案」する場合がありますが、この提案は信号の実際のスペクトルを測定しない推測です。

ヒント: AI にサンプリングの質問をするときは、信号の最高周波数と帯域幅を自分で指定します。 「信号の最高成分が約 4 kHz の場合、fs はどのように選択すればよいですか?また、アンチエイリアシング フィルターはどこに配置すればよいですか?」のように。 AI にスペクトルを推測させないでください。測定。

FFTと周波数解析

FFT (高速フーリエ変換) は、信号を時間軸から周波数軸に変換する高速アルゴリズムです。では、「この信号にはどのような周波数があり、どのくらいの電力があるのでしょうか?」という質問に答えます。 AI は、FFT の実装、結果の解釈、Python コード (numpy/scipy) の作成方法を非常にうまく実行します。ただし、FFT には一般的なエラーがあり、AI コードにそれらが自動的に含まれる可能性があります。

  • 周波数軸のスケーリング: FFT 出力の周波数軸はサンプリング周波数によって異なります。 fs を誤って入力すると、すべての周波数が誤って出力されますが、グラフは正常に表示されます。
  • ウィンドウ処理: 有限の信号を受信すると、エッジで不連続が発生し、スペクトルに擬似拡散 (スペクトル漏れ) が観察されます。 Hann や Hamming などの Windows はこれを軽減します。 AI コードがウィンドウ処理をスキップすると、結果は誤解を招くものになります。
  • 振幅の正規化: FFT 出力の振幅を実際の物理値に変換するには、スケーリングとウィンドウ補正が必要です。省略した場合、振幅が不正確になります。

フィルター設計

フィルターは、信号から不要な周波数を抽出する回路またはアルゴリズムです。基本的なタイプには、ローパス (低周波を通過させる)、ハイパス、バンドパス、バンドパス (ノッチ) の 4 つがあります。デジタル フィルターには 2 つの大きなファミリーがあります。FIR (有限インパルス応答、安定した直線位相) と IIR (無限インパルス応答、計算量は少ないが安定性と位相リスクがある急峻な遷移) です。

AI はフィルターの設計手順 (カットオフ周波数、通過帯域、阻止帯域の減衰、次数の選択) を説明し、scipy で係数生成コードを作成します。ただし、設計するフィルターのカットオフ周波数は正規化されて (ナイキスト周波数に対して) 与えられるため、ここで fs を誤って入力することは非常によくある間違いです。さらに、IIR フィルターでは安定性と位相歪みが問題になる可能性があり、リアルタイム システムでは遅延が問題になる可能性があります。周波数応答グラフと既知のテスト信号を使用して、AI によって生成されたフィルターを必ず検証してください。

ミニケース3個

ケース 1 — 重なり合う振動。エンジニアがモー​​ターの振動を 1 kHz でサンプリングすると、FFT で 300 Hz に強いピークが見られます。エンジンの設計と一致しないこのピークは混乱を招きます。実際、エンジンには 1300 Hz 付近に実際のコンポーネントがあります。これには 1 kHz サンプリングでは不十分であり (ナイキスト 500 Hz)、1300 Hz に 300 Hz が重なっています。 「このピークは本物なのか、それともエイリアシングなのか」をAIと議論し、サンプリング周波数を5kHzに上げたところ、1300Hzの正しい位置にピークが現れました。教訓: 疑わしい丘の上では、まずサンプリングの適切性を問う。

ケース 2 — ウィンドウがスキップされました。インターンはAIにFFTコードを要求し、実行します。彼は単一周波数のテスト トーンを期待していますが、スペクトル全体に広範囲に広がっていることがわかります。問題は、コードがウィンドウ処理 (スペクトル漏れ) を行わないことです。 AI に「ハン ウィンドウを追加して振幅補正を適用する」と指示すると、出力は予想される鋭いピークに戻ります。レッスン: 既知の単一周波数信号を使用して FFT コードをテストします。窓に漏れがないか確認してください。

ケース 3 — 間違った fs。エンジニアはレコーダーからのデータを分析します。デバイスは 48 kHz で記録しましたが、AI コードにはデフォルトの 44.1 kHz が入力されました。すべての周波数は 8% シフトされます。 1000 Hz トーンは 1088 Hz で表示されます。測定器の実fsを確認すると誤差が発見されました。教訓: サンプリング周波数は、分析チェーンにおいて最も重要な数値です。ソースから確認する必要があります。

コピー可能なプロンプトテンプレート

FFT セットアップ テンプレート「Python (numpy/scipy) で FFT 解析コードを作成します。入力: サンプリング周波数 fs=[値] Hz、信号文字列 'x'。コードに次のことを実行させます: (1) ハーン ウィンドウを適用する、(2) FFT を取得する、(3) fs を基準にして周波数軸を正確にスケールする、(4) ウィンドウ補正を使用して片側振幅スペクトルをプロットする。コードの各ステップで「コメントに記載してください」あなたがどのような仮定を立てているのか、私が確認させていただきます。」

サンプリング制御テンプレート 「信号の最大有効周波数は約 [X] Hz です。ナイキスト マージン、アンチエイリアシング フィルターの必要性、およびサンプリング周波数を選択する際の実際の安全マージンについて説明します。範囲を提案しますが、信号の実際のスペクトルを測定することでこれを検証する必要があることを強調してください。」

フィルター設計テンプレート 「scipy を使用して [低域/高域/帯域] パス デジタル フィルターを設計します。カットオフ周波数 [X] Hz、サンプリング周波数 fs=[Y] Hz。FIR オプションと IIR オプション (安定性、位相、遅延、計算負荷) を比較します。カットオフ周波数が fs にどのように正規化されるかをコード内で明確に示します。また、周波数応答グラフでフィルターを検証するコードも含めます。」

結果検証テンプレート 「以下の信号処理コードを調べて、サイレント エラーの原因にフラグを立てます。間違った fs、ウィンドウ処理のスキップ、単位クロストーク (Hz/kHz、V/mV)、正規化の欠如、片面/両面スペクトル クロストーク。それぞれについて (どの基準信号を使用して) テストする方法を提案してください。コード: [貼り付け]」

弱いプロンプト / 強いプロンプト

弱いプロンプト: 「この信号の周波数を調べてください。」

強いプロンプト: 「サンプリング周波数が 10 kHz の信号配列があります。FFT で主要な周波数成分を見つける Python コードを作成します。ハン ウィンドウと振幅補正を使用し、fs に従って周波数軸をスケーリングします。コードの最後に、1 kHz fs の合成テスト信号を含む検証ブロックを追加し、スケーリングが正しいかどうかを確認します。」

弱いプロンプトはコンテキストフリーの応答を生成し、fs を想定します。強力なプロンプト パラメータを返し、自己検証テスト ブロックを要求します。

信号処理における単位と仮定の表

コンセプト

頻繁なエラー

検証

サンプリング周波数(fs)

デバイスの実際の FS ではなくデフォルト

レコーダー設定からの確認

周波数軸

fs が間違っていると軸全体がシフトします

既知の周波数のテストトーン

ウィンドウ処理

スキップ時のスペクトル漏れ

単調信号のピーク幅

振幅

正規化/修正がありません

既知の振幅信号との比較

フィルターカット

fsに従って誤差を正規化する

周波数応答グラフ

注意: FFT グラフが滑らかで信頼できるように見えるからといって、それが正確であるとは限りません。周波数軸のスケールが正しくない場合、すべてのピークは間違った位置にありますが、グラフは完璧に見えます。常に既知の基準を使用して校正してください。

よくある間違い

  • ソースからのサンプリング周波数を検証していません。 fs が間違っていると、すべての周波数がシフトします。
  • ナイキストに違反し、エイリアシングに気付かない。疑わしい丘では、まずサンプリングの適切性を疑ってください。
  • FFT でのウィンドウ処理のスキップ。スペクトル漏れは本当のピークのように見えます。
  • 振幅の正規化を忘れています。振幅は物理値に合わせてスケールされないままになります。
  • フィルターのカットオフ周波数を fs に誤って正規化します。フィルターが予想と異なる場所でカットされます。

要約すれば

この単元では、信号処理概念の学習、FFT およびフィルター コードの作成、分析の構築における強力な補助として AI を位置づけました。しかし、信号処理では、結果がひずみを生じる可能性があります。間違ったサンプリング周波数、ウィンドウ処理のスキップ、ボリュームの干渉、または正規化の欠如により、グラフは美しくても不正確になります。そのため、AI が生成するすべてのコードを既知の基準信号に対してテストし、ソースからのサンプリング周波数を検証し、各結果の単位と物理的な妥当性をテストします。各分析の開始時にナイキストとエイリアシングの概念を確認してください。

アプリケーションタスク

Python で合成テスト信号を作成します: 2 つの既知の周波数 (例: 1 kHz と 3 kHz) の合計、fs=10 kHz。 「FFTセットアップ」テンプレートを使用してAIに解析コードをリクエストし、正しい周波数にピークが表示されることを確認します。次に、意図的に fs を誤って入力し (例: 8 kHz)、ピークがどのようにシフトするかを観察します。最後に、窓を外してスペクトル漏れを確認します。各実験の結果を一文で書きます。

チェックリスト

  • [ ] サンプリング周波数(fs)を実際のレコーダーの設定から検証してみました。
  • [ ] ナイキスト基準を確認し、エイリアシングのリスクを評価しました。
  • [ ] FFT コードに窓処理と振幅補正が実装されていることを確認しました。
  • [ ] 既知の周波数の基準信号を使用してコードをテストしました。
  • [ ] フィルターのカットオフ周波数が fs に正しく正規化されていることを視覚的な応答によって確認しました。
  • [ ] すべての単位 (Hz/kHz、V/mV) を統一しました。