Accord.Audio.ComplexSignal.FromArray C# (CSharp) Method

FromArray() public static method

Create multichannel complex signal from floating-point matrix.
public static FromArray ( float array, int sampleRate ) : ComplexSignal
array float Source multichannel float array (matrix).
sampleRate int Sampling rate for the signal.
return ComplexSignal
        public static ComplexSignal FromArray(float[,] array, int sampleRate)
        {
            int samples = array.GetLength(0);
            int channels = array.GetLength(1);

            // check signal size
            if (!Accord.Math.Tools.IsPowerOf2(samples))
            {
                throw new InvalidSignalPropertiesException("Signals length should be a power of 2.");
            }

            Complex[,] data = new Complex[samples, channels];
            for (int i = 0; i < samples; i++)
                for (int j = 0; j < channels; j++)
                    data[i, j] = new Complex(array[i, j], 0);

            byte[] buffer = new byte[data.Length * Marshal.SizeOf(typeof(Complex))];

            GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned);
            Marshal.Copy(handle.AddrOfPinnedObject(), buffer, 0, buffer.Length);
            handle.Free();

            return new ComplexSignal(buffer, channels, samples, sampleRate);
        }

Same methods

ComplexSignal::FromArray ( Complex signal, int sampleRate ) : ComplexSignal
ComplexSignal::FromArray ( Complex array, int sampleRate, ComplexSignalStatus status ) : ComplexSignal

Usage Example

Ejemplo n.º 1
0
 /// <summary>
 ///   Create complex signal from complex array.
 /// </summary>
 ///
 /// <param name="signal">Source complex array.</param>
 /// <param name="sampleRate">Sample rate of the signal.</param>
 ///
 /// <returns>Returns an instance of complex signal.</returns>
 ///
 public static ComplexSignal FromArray(Complex[,] signal, int sampleRate)
 {
     return(ComplexSignal.FromArray(signal, sampleRate, ComplexSignalStatus.Normal));
 }