example to call scilab from C#
[scilab.git] / scilab / modules / call_scilab / examples / call_scilab / c# / dotnetsci / example / example.cs
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Allan CORNET
4  * 
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at    
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12 //=============================================================================
13 using System;
14 using System.Collections.Generic;
15 using System.Linq;
16 using System.Text;
17 using DotNetScilab;
18 //=============================================================================
19 namespace example
20 {
21     class example
22     {
23         /*
24          * A small example to call scilab from C#
25          * read & write matrix of double and matrix of string
26          */
27         static void example_readwriteMatrixOfDouble(Scilab _objScilab)
28         {
29             //=============================================================================
30             // Send a command to scilab
31             // Here , we want to display SCI variable
32             _objScilab.sendScilabJob("disp(\'SCI = \');");
33             _objScilab.sendScilabJob("disp(SCI);");
34             //=============================================================================
35             double[] A = new double[] { 1, 2, 3, 4, 5, 6 };
36             int mA = 2, nA = 3;
37
38             // Write a matrix of double named in scilab
39             _objScilab.setNamedMatrixOfDouble("A", mA, nA, A);
40
41             // display matrix of double by scilab
42             _objScilab.sendScilabJob("disp(\'A =\');");
43             _objScilab.sendScilabJob("disp(A);");
44             //=============================================================================
45             _objScilab.sendScilabJob("B = A + 1;");
46
47             // get dimensions of a named matrix of double
48             int[] DimB = _objScilab.getNamedMatrixOfDoubleDimensions("B");
49
50             // get named matrix of double
51             double[] B = _objScilab.getNamedMatrixOfDouble("B");
52
53             // display matrix of double from C#
54             Console.WriteLine("");
55             Console.WriteLine("(C#) B =");
56             for (int i = 0; i < DimB[0]; i++)
57             {
58                 for (int j = 0; j < DimB[1]; j++)
59                 {
60                     Console.Write(B[j * DimB[0] + i] + " ");
61                 }
62
63                 Console.WriteLine("");
64             }
65
66             // display matrix of double by scilab
67             _objScilab.sendScilabJob("disp(\'B =\');");
68             _objScilab.sendScilabJob("disp(B);");
69             //=============================================================================
70         }
71
72         static void example_readwriteMatrixOfString(Scilab _objScilab)
73         {
74             //=============================================================================
75             string[] strA = new string[] { "Scilab", "The", "open",
76                                         "source", "for", "numerical",
77                                         "computation" , ":", ")"};
78             int mstrA = 3, nstrA = 3;
79
80             // Write a matrix of string named in scilab
81             _objScilab.setNamedMatrixOfString("string_A", mstrA, nstrA, strA);
82
83             // display matrix of string by scilab
84             _objScilab.sendScilabJob("disp(\'string_A =\');");
85             _objScilab.sendScilabJob("disp(string_A);");
86             //=============================================================================
87             _objScilab.sendScilabJob("string_B = convstr(string_A,\'u\');");
88
89             // get dimensions of a named matrix of string
90             int[] DimstrB = _objScilab.getNamedMatrixOfStringDimensions("string_B");
91
92             // get named matrix of string
93             string[] strB = _objScilab.getNamedMatrixOfString("string_B");
94
95             Console.WriteLine("");
96             Console.WriteLine("(C#) strB =");
97             for (int i = 0; i < DimstrB[0]; i++)
98             {
99                 for (int j = 0; j < DimstrB[1]; j++)
100                 {
101                     Console.Write(strB[j * DimstrB[0] + i] + " ");
102                 }
103
104                 Console.WriteLine("");
105             }
106
107             // display matrix of string by scilab
108             _objScilab.sendScilabJob("disp(\'string_B =\');");
109             _objScilab.sendScilabJob("disp(string_B);");
110             //=============================================================================
111         }
112         //=============================================================================
113         static void Main(string[] args)
114         {
115             // start scilab engine
116             Scilab m_oSCilab = new Scilab();
117
118             example_readwriteMatrixOfDouble(m_oSCilab);
119             example_readwriteMatrixOfString(m_oSCilab);
120
121             // close scilab engine
122             m_oSCilab.finish();
123         }
124         //=============================================================================
125     }
126 }
127 //=============================================================================