Exemplo n.º 1
0
        public void DiffTest()
        {
            var a = CreateRandomArray(DataSize);

            Matlab.PutWorkspaceData("a", "base", a);
            object result = null;

            var start = DateTime.UtcNow;

            Matlab.Feval("diff_vector", 1, out result, "a=");
            var mDuration = DateTime.UtcNow - start;

            var doubles = GetDoubleArray(result);
            var vec1    = DataVector64.NewRealTimeVectorFromArray(a);

            start = DateTime.UtcNow;
            var vecResult = vec1.Diff();
            var vDuration = DateTime.UtcNow - start;

            Console.WriteLine("MATLAB: " + mDuration + " vs. Lib: " + vDuration);

            var res = VecToDoubles(vecResult);

            res.Should().Equal(doubles, (l, r) => Math.Abs(l - r) < 1e-4);
        }
Exemplo n.º 2
0
        public void UnwrapPosTest()
        {
            var a = Enumerable.Range(0, DataSize).Select(i => (double)i).ToArray();

            Matlab.PutWorkspaceData("a", "base", a);
            object result = null;

            var start = DateTime.UtcNow;

            Matlab.Feval("unwrap_vector", 1, out result, "a=");
            var mDuration = DateTime.UtcNow - start;

            var doubles = GetDoubleArray(result);
            var vec1    = DataVector64.NewRealTimeVectorFromArray(a);

            start = DateTime.UtcNow;
            var vecResult = vec1.Unwrap(2 * Math.PI);
            var vDuration = DateTime.UtcNow - start;

            Console.WriteLine("MATLAB: " + mDuration + " vs. Lib: " + vDuration);

            var res = VecToDoubles(vecResult);

            res.Should().Equal(doubles, (l, r) => Math.Abs(l - r) < 1e-4);
        }
Exemplo n.º 3
0
        public void MultiOpsTest()
        {
            var aData = CreateRandomArray(100);
            var bData = CreateRandomArray(100);

            Matlab.PutWorkspaceData("a", "base", aData);
            Matlab.PutWorkspaceData("b", "base", bData);
            object result = null;

            var start = DateTime.UtcNow;

            Matlab.Feval("multi_ops2", 1, out result, "a=", "b=");
            var mDuration = DateTime.UtcNow - start;

            var doubles = GetDoubleArray(result);
            var vec1    = (DataVector64)DataVector64.NewRealTimeVectorFromArray(aData);
            var vec2    = (DataVector64)DataVector64.NewRealTimeVectorFromArray(bData);
            var ops     = new PreparedOps2F64();

            ops.AddOps((a, b) =>
            {
                a.ToComplex();
                a.Sqrt();
                a.AddComplex(new Complex64(0.5, 0));
                a.Magnitude();
                b.MulVector(a);
            });
            var vDuration = DateTime.UtcNow - start;

            ops.Exec(vec1, vec2);
            Console.WriteLine("MATLAB: " + mDuration + " vs. Lib: " + vDuration);

            var res = VecToDoubles(vec2);

            res.Should().Equal(doubles, (l, r) => Math.Abs(l - r) < 1e-1);
        }