示例#1
0
        private static void Main()
        {
            using (var octave = new OctaveContext())
            {
                // Please note that there is no ";" at the end. This is important if we want to capture the output.
                var scalarResult = octave
                                   .Execute("2 + 2")
                                   .AsScalar();

                var vectorResult = octave
                                   .Execute("[1 2 3 4 5]")
                                   .AsVector();

                var matrixResult = octave
                                   .Execute("[1 2 3 4 5; 5 4 3 2 1]")
                                   .AsMatrix();

                var vec           = new double[] { 1, 2, 3, 4, 5 };
                var anotherVector = octave.Execute(vec.ToOctave()); // [1 2 3 4 5]

                var mat = new[]
                {
                    new double[] { 1, 2, 3, 4, 5 },
                    new double[] { 1, 2, 3, 4, 5 }
                };
                var anotherMatrix = octave.Execute(mat.ToOctave());// [1 2 3 4 5;1 2 3 4 5]
            }
        }
        public void WhenHeavilyMultithreaded_ThrowsNoExceptions()
        {
            var tasks = new List <Task>();

            //arrange
            for (var i = 0; i < Environment.ProcessorCount * 2; i++)
            {
                var task = Task.Run(() =>
                {
                    for (var j = 0; j < 100; j++)
                    {
                        using (var octave = new OctaveContext())
                        {
                            //act
                            var result = octave.Execute("2+2").AsScalar();

                            //assert
                            Assert.AreEqual(4, result);
                        }
                    }
                });

                tasks.Add(task);
            }

            Task.WaitAll(tasks.ToArray());
        }
示例#3
0
 public Function()
 {
     Settings.OctaveCliPath       = Path;
     OctaveContext.OctaveSettings = Settings;
     octave             = new OctaveContext();
     LoadPackageProcess = new Thread(LoadPackage);
     LoadPackageProcess.Start();
 }
 public void WhenScriptExecutionTakesTooLong_ShouldThrowException()
 {
     //arrange
     using (var octave = new OctaveContext())
     {
         //act
         octave.Execute("pause(100)", 25);
     }
 }
 public void WhenPassedInvalidScript_ShouldThrowException()
 {
     //arrange
     using (var octave = new OctaveContext())
     {
         //act
         octave.Execute("'123", Timeout);
     }
 }
示例#6
0
 private static void Main()
 {
     using (var octave = new OctaveContext())
     {
         octave.Execute("pkg load fuzzy-logic-toolkit;");
         double result = octave
                         .Execute("algebraic_product(5,2)")
                         .AsScalar(); // 10
     }
 }
        public void WhenPassedVectorString_ShouldReturnCorrectVector()
        {
            //arrange
            using (var octave = new OctaveContext())
            {
                //act
                var result = octave.Execute("[0 1 2 3 4 ]", Timeout).AsVector();

                //assert
                CollectionAssert.AreEqual(new double[] { 0, 1, 2, 3, 4 }, result);
            }
        }
        public void WhenPassedMatrixString_ShouldReturnCorrectMatrix()
        {
            //arrange
            using (var octave = new OctaveContext())
            {
                //act
                var result = octave.Execute("[0 1 2 3 4 ; 4 3 2 1 0]", Timeout).AsMatrix();

                //assert
                CollectionAssert.AreEqual(new double[] { 0, 1, 2, 3, 4 }, result[0]);
                CollectionAssert.AreEqual(new double[] { 4, 3, 2, 1, 0 }, result[1]);
            }
        }
        public void WhenCorrectScript_ShouldReturnString()
        {
            //arrange
            using (var octave = new OctaveContext())
            {
                //act
                var result = octave.Execute("123");

                //assert
                Assert.IsTrue(result.StartsWith("ans"));
                Assert.IsTrue(result.EndsWith("123"));
            }
        }
示例#10
0
        public void WhenPassedDoubleInRange_ShouldReturnCorrectValue()
        {
            const double input = 15;

            //arrange
            using (var octave = new OctaveContext())
            {
                //act
                var result = octave.Execute(input.ToString(CultureInfo.InvariantCulture), Timeout).AsScalar();

                //assert
                Assert.AreEqual(input, result);
            }
        }
示例#11
0
        public Form1()
        {
            InitializeComponent();
            label1.Text = "";
            OctaveSettings settings = new OctaveSettings();

            settings.OctaveCliPath       = @"C:\Users\sinoa\AppData\Local\Programs\GNU Octave\Octave-6.2.0\mingw64\bin\octave.bat";
            OctaveContext.OctaveSettings = settings;
            octave = new OctaveContext();

            octave.Execute("5*5");

            originalLocationLabel1 = label1.Location;
            originalLocationLabel2 = label2.Location;
        }
示例#12
0
        static void Main(string[] args)
        {
            using (var octave = new OctaveContext())
            {
                // Note: your octave-cli must support some plot backend, in case of problems investigate manually in octave-cli

                var script = @"
x = -10:0.1:10;
y = sin (x);

handle = plot (x, y);

title (""Hello from C#"");
xlabel (""x"");
ylabel (""sin (x)"");

waitfor(handle); #                 <- without that plot window would not show 
                ";

                octave.Execute(script, int.MaxValue);
            }
        }
示例#13
0
        private void btnProcesar(object sender, EventArgs e)
        {
            OctaveContext.OctaveSettings.OctaveCliPath = octaveCliPath;
            OctaveContext octave = new OctaveContext();

            i = 0;
            timer1.Interval = Int32.Parse(intervalo_tb.Text);

            restablecerPosiciones();

            button1.Enabled = false;

            if (finalizado)
            {
                cantSimulacionesTxt_lb.Text = "Simulaciones Ejecutadas: ";
                chart1.Series["G1(s)"].Points.Clear();
                chart1.Series["G2(s)"].Points.Clear();

                dataGridView1.Rows.Clear();
                dataGridView1.Refresh();
            }

            //step(g,tiempo simulacion,rango tiempo)
            octave.Execute("clear;" +
                           "pkg load control;" +
                           "s=tf('s');" +
                           "m1=" + m1_tb.Text + ";m2=" + m2_tb.Text + ";" +
                           "k1b2=" + k1_tb.Text + ";k2=" + k2_tb.Text + ";" +
                           "b1=" + b1_tb.Text + ";" +
                           variable +
                           "[y,t]=" + respuestaAl + "(g1);" +
                           "[y2,t]=" + respuestaAl + "(g2);" +
                           "c=length(t);" +
                           "tiempo=t(c)*1.2;" +
                           "[y,t]=" + respuestaAl + "(g1,tiempo,tiempo/" + numeroElementos_tb.Text + ");" +
                           "[y2,t]=" + respuestaAl + "(g2,tiempo,tiempo/" + numeroElementos_tb.Text + ");"
                           );

            Array.Resize(ref vectorg1y, Int32.Parse(numeroElementos_tb.Text));
            Array.Resize(ref vectorg2y, Int32.Parse(numeroElementos_tb.Text));

            Array.Resize(ref vectort, Int32.Parse(numeroElementos_tb.Text));


            char[] delims = new[] { '\r', '\n' };

            string[] g1NumDem = octave.Execute("g1").Split(delims, StringSplitOptions.RemoveEmptyEntries);
            string[] g2NumDem = octave.Execute("g2").Split(delims, StringSplitOptions.RemoveEmptyEntries);

            g1TextFunction = g1NumDem[1].Trim() + "  /  " + g1NumDem[3].Trim();
            g2TextFunction = g2NumDem[1].Trim() + "  /  " + g2NumDem[3].Trim();

            vectorg1y = octave.Execute("y").AsVector();
            vectorg2y = octave.Execute("y2").AsVector();
            vectort   = octave.Execute("t").AsVector();


            if (mostrarAnimaciones)
            {
                timer1.Enabled = true;
            }
            else
            {
                for (int i = 0; i < Int32.Parse(numeroElementos_tb.Text); i++)
                {
                    chart1.Series["G1(s)"].Points.AddXY(vectort[i], vectorg1y[i]);
                    chart1.Series["G2(s)"].Points.AddXY(vectort[i], vectorg2y[i]);
                }
                registrarSimulacion();
            }
        }