Managed C++ で作った Fft クラスのラッパー。 FFT の動作の詳細は fft\fft.cpp の方を参照。
Exemple #1
0
		/// <summary>
		/// 時間領域データから作成。
		/// </summary>
		/// <param name="x">時間領域データ</param>
		/// <param name="length">データの長さ</param>
		/// <param name="skip">読み飛ばす長さ</param>
		/// <returns>作成された周波数特性</returns>
		public static Spectrum FromTimeSequence(double[] x, int length, int skip)
		{
			if(x == null) return null;

			int len = BitOperation.FloorPower2(length);

			double[] tmp = new double[len];
			for(int i=0; i<len; ++i) tmp[i] = x[skip + i];
			Fft fft = new Fft(len);
			fft.Transform(tmp);
			return new Spectrum(tmp);
		}
Exemple #2
0
        /// <summary>
        /// 時間領域データから作成。
        /// </summary>
        /// <param name="x">時間領域データ</param>
        /// <param name="length">データの長さ</param>
        /// <param name="skip">読み飛ばす長さ</param>
        /// <returns>作成された周波数特性</returns>
        public static Spectrum FromTimeSequence(double[] x, int length, int skip)
        {
            if (x == null)
            {
                return(null);
            }

            int len = BitOperation.FloorPower2(length);

            double[] tmp = new double[len];
            for (int i = 0; i < len; ++i)
            {
                tmp[i] = x[skip + i];
            }
            Fft fft = new Fft(len);

            fft.Transform(tmp);
            return(new Spectrum(tmp));
        }
Exemple #3
0
        public CFft(int length)
        {
            Fft.CheckLength(length);

            fft = new CFftCpp(length);
        }
Exemple #4
0
 /// <summary>
 /// 周波数領域データ(時系列データを Fft クラスで変換したもの)から作成。
 /// </summary>
 /// <param name="x">周波数領域データ</param>
 public Spectrum(double[] x)
 {
     this.x   = x;
     this.fft = new Fft(x.Length);
 }
Exemple #5
0
		/// <summary>
		/// 周波数領域データ(時系列データを Fft クラスで変換したもの)から作成。
		/// </summary>
		/// <param name="x">周波数領域データ</param>
		public Spectrum(double[] x)
		{
			this.x = x;
			this.fft = new Fft(x.Length);
		}