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()); }
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); } }
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")); } }
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); } }
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; }
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); } }
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(); } }