信号認識方法の比較。 ニューラルネットワークとマッチドフィルター

最近、「ニューラルネットワークを使用した無線工学信号の認識」という記事を公開しました[1]。 そして、これらの目的で合意されたフィルター(SF)を使用する可能性について、かなり長く興味深い議論がありました。 もちろん、解決されたタスクに一貫したフィルターを使用することには問題があります。 しかし、別の質問に興味がありました。信号パラメーター、ニューラルネットワーク(NS)、またはSFにわずかな変動がある場合に、使用する方が良い方法です。 信号発生器として、従来のマルチバイブレーターを使用します。 サウンドカードを介して信号を送信し、[1]で説明した方法とマッチドフィルターを使用して認識します。 次に、ソフトウェアは結果を比較し、どちらの方法が良いかを答えます。









パート1.信号発生器







比較を適切にするために、REALシグナルを認識します。 作成するには、ジェネレータが必要です。 ノイズジェネレーターも必要です。 信号はマルチバイブレーターを使用して生成されます。 RFコンポーネントが「上昇」しないように、ローパスフィルターを設定する必要があります。 USBを搭載。 オーディオカードの電圧範囲は、0.001〜1.5Vでなければなりません。 また、マルチバイブレータからの出力は0〜5Vです。 電圧を制限するには、L字型のディバイダーを使用します。 以下は、発電機の概略図です。







画像







私はゼロからそれをしませんでした、なぜなら 2年目にハッカソンの一環として、心電図を撮影するための心電信号プリアンプを組み立てました。 したがって、この接続の追加に限定しました。 最後に何が起こったのかを示します。







外観:







画像







操作中:







画像







ホワイトノイズジェネレーターとして、マットからrandNormメソッドを使用しました。 C#言語用のAI.MathModライブラリ。







パート2.信号の受信







信号を受信して​​記録するために、C#言語のNAudioライブラリを使用しました。 次に、信号を記録するクラスを作成する必要があります。 最初に名前空間を接続します。







using System; using System.Collections.Generic; using NAudio.Wave; using AI.MathMod.AdditionalFunctions; using AI.MathMod;
      
      





グローバル変数を宣言します。







  // WaveIn -    WaveIn waveIn; //  List<double> lf2 = new List<double>(); //   double fd = 500, //  timeRec = 5; //  Vector signal = new Vector(); //    public Vector Signal { get{return signal;} } //    public Vector Time { get{return MathFunc.GenerateTheSequence(0,signal.N)/fd;} }
      
      





そして、記録を開始する方法( ここから取得):







 void Start(){ try { waveIn = new WaveIn(); //    (  ) waveIn.DeviceNumber = 0; //   DataAvailable ,      waveIn.DataAvailable += waveIn_DataAvailable; //    waveIn.RecordingStopped += new EventHandler<StoppedEventArgs>(waveIn_RecordingStopped); // wav- -   -     ( mono) waveIn.WaveFormat = new WaveFormat(fd,16,1); //  waveIn.StartRecording(); } catch{} }
      
      





記録自体:







 //     void waveIn_DataAvailable(object sender, WaveInEventArgs e) { if (this.InvokeRequired) { this.BeginInvoke(new EventHandler<WaveInEventArgs>(waveIn_DataAvailable), sender, e); } else { lf2.Clear(); for (var i = 0; i < e.Buffer.Length; i += 2) { double sample = BitConverter.ToInt16(e.Buffer, i) / 32768.0; lf2.Add(sample); } signal.Add(lf2.ToArray()); if(signal.N>=(timeRec*fd)) Stop(); //   } }
      
      





パート3.一貫性のあるフィルター







次に、一貫したフィルターモデルを作成する必要があります。 整合フィルター(SF)は、フィルターが有用な信号と一致する場合、最大SNR(信号対雑音比)を提供します。 フィルターの周波数応答は、信号のスペクトル密度モジュールと一致します。 SFは、単一パルス(SFR)、遅延線(LZ)、および加算器用の整合フィルターで構成されています。 矩形パルスのSFOIは、積分器、LZ、インバーター、および加算器で構成されます(矩形エンベロープを備えた無線パルスの場合、積分器は無線積分器に置き換えられます。これは、多くの場合、バンドパスフィルター、特に発振回路またはコレクター回路に発振回路を備えた共振増幅器として機能します)。 以下にブロック図を示します。 SNRの増加は、信号が狭帯域であり、干渉が広帯域であるために発生します[2]。







画像







また、ドライブにより、SNRが増加します。 ここで、mはパケット内のパルス数です。 LZの実装には高いコストと複雑さがあるため、実際のタスクでは、デジタル蓄積を使用する方法がますます使用されています。 次に、誤警報と正しい検出の確率は、次の関係によって与えられます。

















ドライブ構造(すべてkof。「A」= 1):

画像







概略的に、ドライブは次のとおりです。

画像







パルスの繰り返し周期はパルスの持続時間と同じであるため、遅延線のセットではなく、1つだけを使用して、いわゆる再循環器をドライブに配置できます[3]。







私たちの場合、完璧でロスレスです。 SFのブロック図。

画像







SFの構造と計算の詳細については、[2 pp。415-427]および[3 pp。563-598]を参照してください。







そこで信号を見つける確率が0.6より大きい場合、信号が登録されていると判断されます。







パート4.比較のためのソフトウェア







その構造内のプログラムのアーキテクチャには、「2つのフラグ」が含まれています。







  bool flag1 = false; bool flag2 = false;
      
      





プログラムが起動すると、両方とも非アクティブになります。ウィンドウがポーリングされるたびに、フラグがアクティブかどうかをチェックし、最初のフラグがアクティブの場合、一致したフィルターに1ポイントが加算されます。 2番目の場合、スコアはニューラルネットワークに入金されます。 いずれの場合でも、すべてのパラメーターは元の位置に戻ります。







まとめ







調査中の信号に合わせた整合フィルターを使用して20の実験を実施しました。SNR= 0.4、結果:16:4がSFに有利です。 その後、信号の持続時間は5%変化し、結果は国会に賛成の2:18になりました。 このことから、KNOWNパラメーターを使用すると、SFはANNよりもはるかに優れた機能を発揮しますが、パラメーターが不明であるか、変化する可能性がある場合は、ANNを使用する方が適切であると結論付けることができます。







参照:







  1. ニューラルネットワークを使用した無線信号の認識
  2. バスカコフS.I. 無線回線と信号。 M。:高等学校、第2版。
  3. ゴノロフスキーI.S. 無線回線と信号。 M。:バスタード、第5版。 2006年



All Articles