Exemplo n.º 1
0
        /// <summary>
        /// コンストラクタ
        /// 帯域構造体を使用したバージョンです。
        /// </summary>
        /// <param name="numberOfpartitions">帯域分割数</param>
        /// <param name="band">検査対象領域</param>
        /// <param name="timespan">検査時間 時間窓をずらしながら検査するので、応答速度や計算精度に影響します。</param>
        /// <param name="samplingPeriod">サンプリング周期</param>
        public SignalBasic(int numberOfPartitions, Signal_Process.FFTresult.Band band, TimeSpan timespan, TimeSpan samplingPeriod)
        {
            long maxFrequency = band.Max;
            long minFrequency = band.Min;

            this.Init(numberOfPartitions, maxFrequency, minFrequency, timespan, samplingPeriod);      // 丸投げ
        }
Exemplo n.º 2
0
 /// <summary>
 /// 本クラスが内部に保持している帯域のリストを返す
 /// </summary>
 /// <returns>帯域のリスト</returns>
 public Signal_Process.FFTresult.Band[] GetBands()
 {
     Signal_Process.FFTresult.Band[] bands = new Signal_Process.FFTresult.Band[this.band.Length];
     for (int i = 0; i < this.band.Length; i++)                              // クローンを作って返す(Bandを構造体で設計しているのでこれでもよい)
     {
         bands[i] = this.band[i];
     }
     return(bands);
 }
Exemplo n.º 3
0
 /// <summary>
 /// 強制的に、指定帯域で発声があることを認識させる
 /// 2011/11/18 呼び出し先が未実装・・・
 /// </summary>
 /// <param name="band">指定帯域</param>
 public void RecognizeSignal(Signal_Process.FFTresult.Band band)
 {
     for (int i = 0; i < this.band.Length; i++)                                                      // 本クラス内に用意されている検査器を全てチェック
     {
         if (this.band[i].CenterFrequency > band.Min && this.band[i].CenterFrequency > band.Max)
         {
             this.sensor[i].RecognizeSignal();                                                       // 検査器に発声を認識させる
         }
     }
     return;
 }
Exemplo n.º 4
0
        /// <summary>
        /// 任意の帯域において発声が検出されているかどうかを返す
        /// 検査対象外の帯域だったり、検出されていなければfalseが返ります。
        /// </summary>
        /// <param name="band">指定帯域</param>
        /// <returns>検出されていればtrue</returns>
        public Boolean CheckDetection(Signal_Process.FFTresult.Band band)
        {
            Boolean ans = false;

            for (int i = 0; i < this.band.Length; i++)                                                      // 本クラス内に用意されている検査器を全てチェック
            {
                if (this.band[i].CenterFrequency > band.Min && this.band[i].CenterFrequency > band.Max && this.sensor[i].FrontDetection == true)
                {
                    ans = true;
                    break;
                }
            }
            return(ans);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 検出された帯域情報を返す
        /// </summary>
        /// <returns>帯域情報</returns>
        public Signal_Process.FFTresult.Band[] GetDetectedBands()
        {
            int i = 0;

            for (int k = 0; k < this.sensor.Length; k++)
            {
                if (this.sensor[k].FrontDetection == true)
                {
                    i++;                                                                                    // 信号が検出された帯域数をカウント
                }
            }
            Signal_Process.FFTresult.Band[] bands = new Signal_Process.FFTresult.Band[i];                   // 信号が検出された数だけ帯域を示すクラスを生成
            i = 0;
            for (int k = 0; k < this.sensor.Length; k++)
            {
                if (this.sensor[k].FrontDetection == true)
                {
                    bands[i] = this.band[k];
                    i++;
                }
            }
            return(bands);
        }