summaryrefslogtreecommitdiffstats
path: root/scilab/modules/compatibility_functions/help/en_US/mtlb_eval.xml
blob: 2e2623ca389d9e49a03f112099d5ac428b870334 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?xml version="1.0" encoding="UTF-8"?>
<!--
    * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
    * Copyright (C) 2004-2007 - INRIA - Vincent COUVERT 
    * 
    * This file must be used under the terms of the CeCILL.
    * This source file is licensed as described in the file COPYING, which
    * you should have received as part of this distribution.  The terms
    * are also available at    
    * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
    *
    -->
<refentry version="5.0-subset Scilab" xml:id="mtlb_eval" xml:lang="en"
          xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg"
          xmlns:ns4="http://www.w3.org/1999/xhtml"
          xmlns:mml="http://www.w3.org/1998/Math/MathML"
          xmlns:db="http://docbook.org/ns/docbook">
  <info>
    <pubdate>$LastChangedDate$</pubdate>
  </info>

  <refnamediv>
    <refname>mtlb_eval</refname>

    <refpurpose>Matlab eval emulation function</refpurpose>
  </refnamediv>

  <refsection>
    <title>Description</title>

    <para>Scilab equivalent for Matlab <literal>eval</literal> is different
    according to its inputs and outputs</para>

    <para>The function <literal>mtlb_eval(str1,str2)</literal> is used by
    <literal>mfile2sci</literal> to replace <literal>eval</literal> because it
    was not possible to know what were the inputs while porting Matlab code to
    Scilab. This function will determine the correct semantic at run time. If
    you want to have a more efficient code it is possible to replace
    <literal>mtlb_eval</literal> calls:</para>

    <itemizedlist>
      <listitem>
        <para>When called with one input and no output,
        <literal>mtlb_eval(str1)</literal> may be replaced by
        <literal>evstr(str1)</literal> if <literal>str1</literal> is a valid
        Scilab expression or by <literal>execstr(str1)</literal> if
        <literal>str1</literal> is a valid Scilab instruction.</para>
      </listitem>

      <listitem>
        <para>When called with one input and one output,
        <literal>val=mtlb_eval(str1)</literal> may be replaced by
        <literal>val=evstr(str1)</literal> if <literal>str1</literal> is a
        valid Scilab instruction.</para>
      </listitem>

      <listitem>
        <para>When called with two inputs and no output,
        <literal>mtlb_eval(str1,str2)</literal> may be replaced by:
        <literal>if execstr(str1,"errcatch")&lt;&gt;0 then
        execstr(str2);end</literal> if <literal>str1</literal> and
        <literal>str2</literal> are valid Scilab instructions.</para>
      </listitem>

      <listitem>
        <para>When called with more than one output and one input,
        <literal>[val1,val2,...]=mtlb_eval(str1)</literal> may be replaced by
        <literal>execstr("[val1,val2,...]"+str1)</literal> if
        <literal>str1</literal> is a valid Scilab instruction.</para>
      </listitem>

      <listitem>
        <para>When called with two inputs and more than one output,
        <literal>[val1,val2,...]=mtlb_eval(str1,str2)</literal> may be
        replaced by:</para>

        <programlisting> 
if execstr("[val1,val2,...]"+str1,"errcatch")&lt;&gt;0 then
  execstr("[val1,val2,...]"+str2);
end
 </programlisting>

        <para>if <literal>str1</literal> and <literal>str2</literal> are valid
        Scilab instructions.</para>
      </listitem>
    </itemizedlist>

    <para>Caution: <literal>mtlb_eval</literal> has not to be used for hand
    coded functions.</para>
  </refsection>

  <refsection>
    <title>See Also</title>

    <simplelist type="inline">
      <member><link linkend="evstr">evstr</link></member>

      <member><link linkend="execstr">execstr</link></member>
    </simplelist>
  </refsection>

  <refsection>
    <title>Authors</title>

    <simplelist type="vert">
      <member>V.C.</member>
    </simplelist>
  </refsection>
</refentry>