Click here to Skip to main content
15,885,546 members
Articles / Programming Languages / C++

A class wrapper for Matlab(c) ActiveX Control

Rate me:
Please Sign up or sign in to vote.
4.42/5 (18 votes)
21 Oct 20023 min read 305.9K   3.9K   65  
Eases up the use of the Matlab(c) COM server...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>CMatlabEngine class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
<hr><h1>CMatlabEngine Class Reference</h1>A class wrapper for the Matlab COM interface. 
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="MatlabEngine_8h-source.html">MatlabEngine.h</a>&gt;</code>
<p>
<a href="classCMatlabEngine-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Internal methods</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="z13_0" doxytag="CMatlabEngine::ProcessString"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z13_0">ProcessString</a> (LPCTSTR szName, BSTR &amp;bstrName)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Allocates bstrName and transforms / copy szName to bstrName.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z13_1" doxytag="CMatlabEngine::GetMatrixKnownSize"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z13_1">GetMatrixKnownSize</a> (LPCTSTR szName, UINT nRows, UINT nCols, std::vector&lt; double &gt; &amp;vArray)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Retreives a matrix from matlab (you must know the size of the matrix).</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z13_2" doxytag="CMatlabEngine::GetMatrixKnownSize"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z13_2">GetMatrixKnownSize</a> (LPCTSTR szName, UINT nRows, UINT nCols, std::vector&lt; double &gt; &amp;vRealArray, std::vector&lt; double &gt; &amp;vImgArray)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Retreives a complex matrix from matlab (you must know the size of the matrix).</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z13_3" doxytag="CMatlabEngine::ErrHandler"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z13_3">ErrHandler</a> (HRESULT hr, EXCEPINFO excep, UINT uArgErr)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Display a error message defined by hr, excep and uArgErr.</em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Constructors</div></td></tr>
<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z1_0">CMatlabEngine</a> (bool bDedicated=false)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Default constructor.</em> <a href="#z1_0"></a><em></em></font><br><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Engine Initialization checkers</div></td></tr>
<tr><td nowrap align=right valign=top><a name="z3_0" doxytag="CMatlabEngine::IsInitialized"></a>
bool&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z3_0">IsInitialized</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns true if the matlab engine has been properly initialized</em></font><br><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Matlab window handling</div></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z5_0">IsVisible</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns true if matlab is visible</em> <a href="#z5_0"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z5_1">Show</a> (bool bShow=true)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>show / hide matlab console</em> <a href="#z5_1"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z5_2" doxytag="CMatlabEngine::MinimizeWindow"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z5_2">MinimizeWindow</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>minimize matlab console</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z5_3" doxytag="CMatlabEngine::MaximiseWidow"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z5_3">MaximiseWidow</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>maximize matlab console</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z5_4" doxytag="CMatlabEngine::Quit"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z5_4">Quit</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Quit console.</em></font><br><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Engine Kernel</div></td></tr>
<tr><td nowrap align=right valign=top>HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z7_0">Execute</a> (LPCTSTR szCode)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Execute matlab instructions.</em> <a href="#z7_0"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z7_1" doxytag="CMatlabEngine::GetResult"></a>
const BSTR &amp;&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z7_1">GetResult</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Get the latest string result of Execute...</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z7_2">PutMatrix</a> (LPCTSTR szName, const std::vector&lt; double &gt; &amp;vArray, UINT nRows, UINT nCols)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Add a matrix to matlab workspace.</em> <a href="#z7_2"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z7_3">PutMatrix</a> (LPCTSTR szName, const std::vector&lt; double &gt; &amp;vRealArray, const std::vector&lt; double &gt; &amp;vImgArray, UINT nRows, UINT nCols)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Add a complexmatrix to matlab workspace.</em> <a href="#z7_3"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z7_4">GetMatrix</a> (LPCTSTR szName, UINT &amp;nRows, UINT &amp;nCols, std::vector&lt; double &gt; &amp;vRealArray, std::vector&lt; double &gt; *pImgArray=NULL)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Retreives a matrix from matlab.</em> <a href="#z7_4"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z7_5">PutString</a> (LPCTSTR szName, LPCTSTR szString)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Adds a string to matlab.</em> <a href="#z7_5"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z7_6">GetString</a> (LPCTSTR szName, LPTSTR &amp;szString)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Retreives a string from Matlab.</em> <a href="#z7_6"></a><em></em></font><br><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Workspace</div></td></tr>
<tr><td nowrap align=right valign=top><a name="z9_0" doxytag="CMatlabEngine::SetWorkspace"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z9_0">SetWorkspace</a> (LPCTSTR szWorkspace)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>sets the current workspace, (default is "base")</em></font><br><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Error handling</div></td></tr>
<tr><td nowrap align=right valign=top><a name="z11_0" doxytag="CMatlabEngine::GetLastErrorMessage"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z11_0">GetLastErrorMessage</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Displays a message box with error description.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z11_1" doxytag="CMatlabEngine::GetLastHResult"></a>
HRESULT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z11_1">GetLastHResult</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns last HRESULT.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z11_2" doxytag="CMatlabEngine::GetLastVResult"></a>
const VARIANT &amp;&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z11_2">GetLastVResult</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns last VARIANT result</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z11_3" doxytag="CMatlabEngine::GetLastExcep"></a>
const EXCEPINFO &amp;&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z11_3">GetLastExcep</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns last EXECPINFO</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="z11_4" doxytag="CMatlabEngine::GetLastArgErr"></a>
UINT&nbsp;</td><td valign=bottom><a class="el" href="classCMatlabEngine.html#z11_4">GetLastArgErr</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>returns last ArgErr</em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A class wrapper for the Matlab COM interface.
<p>

<p>
This class wraps the Matlab COM interfaces and eases up the integration of Matlab in any Windows program. With this class,  you can access Matlab engine in a few lines and without playing with the ugly COM syntax or linking with the Matlab libraries. 
<p>
<b>Initialization:</b>Each MatlabEngine object creates an instance of the Matlab engine (this is done automatically in the constructor). The user can check that initialization has successed by calling IsInited. Do not forget to initialize COM in the application thread by calling CoInitialize. 
<p>
The users with Matlab version earlier than 6.0 should undefine the constant MATLAB_VERSION_6. 
<p>
<b>Example of use:</b> <div class="fragment"><pre><a class="code" href="classCMatlabEngine.html">CMatlabEngine</a> matlab; 
</pre></div> <ul>
<li>Using matlab command line: <div class="fragment"><pre><span class="comment">// showing a classic Matlab example:</span>
matlab.<a class="code" href="classCMatlabEngine.html#z7_0">Execute</a>(_T(<span class="stringliteral">"surf(peaks);"</span>));
</pre></div>  <li>Sending a matrix of data to Matlab: <div class="fragment"><pre><span class="keywordtype">int</span> m,n;
vector&lt;double&gt; vMatrix(m*n);
<span class="comment">// filling vMatrix with elements, line by line : vMatrix(i,j) = vMatrix[i * n + j]</span>
...

matlab.PutMatrix(_T(<span class="stringliteral">"matrix"</span>), vMatrix, m, n); 
</pre></div>  <li>Sending a string to Matlab: <div class="fragment"><pre>matlab.<a class="code" href="classCMatlabEngine.html#z7_5">PutString</a>(_T(<span class="stringliteral">"string"</span>),_T(<span class="stringliteral">"This is a test string"</span>));
</pre></div>   <li>Retreiving a matrix from Matlab: <div class="fragment"><pre>vector&lt;double&gt; vMatrix;
UINT nRows, nCols;

<span class="comment">// suppose that v is a matrix in the matlab workspace</span>
matlab.<a class="code" href="classCMatlabEngine.html#z7_4">GetMatrix</a>(_T(<span class="stringliteral">"v"</span>), nRows, nCols, vMatrix);
<span class="comment">// vMatrix now contains v, nRows the number of rows of v and nCols the number of columns of v...</span>
</pre></div>  <li>Sending a string to Matlab <div class="fragment"><pre>matlab.<a class="code" href="classCMatlabEngine.html#z7_5">PutString</a>(<span class="stringliteral">"text"</span>,<span class="stringliteral">"This is a string"</span>);
</pre></div>  <li>Retreiving a string from Matlab <div class="fragment"><pre>LPTSTR szText;
matlab.<a class="code" href="classCMatlabEngine.html#z7_6">GetString</a>(<span class="stringliteral">"text"</span>,szText);
</pre></div> Note that szText is allocated on the head and must be delete by the user.  </ul>

<p>
<b>Requisites:</b>  <ul>
<li>Matlab ActiveX control installed on your machine to make it work. <li>Does not need MFC </ul>
 
<p>
<b>Licensing:</b>This code is totally free. Just don't forget to add the authors name in the credits...
<p>
<dl compact><dt><b>Author: </b></dt><dd>
Jonathan de Halleux, <a href="mailto:dehalleux@auto.ucl.ac.be">dehalleux@auto.ucl.ac.be</a> </dl>
<p>
<b>Revision history</b> <ul>
<li><b>10-09-2002</b>, GetString is now working! <li><b>10-08-2002</b>, Fixed bug in GetResult, GetMatrix. Found by Juan Carlos Cobas. <li><b>09-25-2002</b>, GetMatrix is now working ! <li><b>09-23-2002</b>, Added MATLAB_VERSION_6 constant to disable features. Undefine the constant if your Matlab version is &lt; 6. This solution was found by ZHANG Yan. Added PutString  </ul>
<dl compact><dt><b>Reference</b></dt><dd>
Matlab COM documentation: <a href="http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/apiext.pdf">http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/apiext.pdf</a> </dl>
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="z1_0" doxytag="CMatlabEngine::CMatlabEngine"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> CMatlabEngine::CMatlabEngine </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">bool&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>bDedicated</em> = false          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Default constructor.
<p>
This constructor initializes the Matlab Engine. Successfull initialization can be checked with IsInited . <dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>bDedicated</em>&nbsp;</td><td>
true if the Matlab engine instance has to be unique, false otherwize (default is false) </td></tr>
</table>
</dl><dl compact><dt><b>See also: </b></dt><dd>
<a class="el" href="classCMatlabEngine.html#z3_0">IsInitialized</a> </dl>    </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a name="z7_0" doxytag="CMatlabEngine::Execute"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> HRESULT CMatlabEngine::Execute </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LPCTSTR&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>szCode</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Execute matlab instructions.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>szCode</em>&nbsp;</td><td>
string containing the matlab code to execute</td></tr>
</table>
</dl>Here's an example of use: <div class="fragment"><pre>        <a class="code" href="classCMatlabEngine.html">CMatlabEngine</a> mt;
        ...
        mt.<a class="code" href="classCMatlabEngine.html#z7_0">Execute</a>(_T(<span class="stringliteral">"surf(peaks)"</span>));
        mt.<a class="code" href="classCMatlabEngine.html#z7_0">Execute</a>(_T(<span class="stringliteral">"title('demo of use')"</span>));
</pre></div>     </td>
  </tr>
</table>
<a name="z7_4" doxytag="CMatlabEngine::GetMatrix"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> HRESULT CMatlabEngine::GetMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LPCTSTR&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>szName</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>UINT &amp;&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nRows</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>UINT &amp;&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nCols</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>std::vector&lt; double &gt; &amp;&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vRealArray</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>std::vector&lt; double &gt; *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pImgArray</em> = NULL</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Retreives a matrix from matlab.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>szName</em>&nbsp;</td><td>
name of the variable in matlab  </td></tr>
<tr><td valign=top><em>nRows</em>&nbsp;</td><td>
number of rows in matrix  </td></tr>
<tr><td valign=top><em>nCols</em>&nbsp;</td><td>
number of columns in matrix </td></tr>
<tr><td valign=top><em>vRealArray</em>&nbsp;</td><td>
vector of data (real part), filled line by lines </td></tr>
<tr><td valign=top><em>pImgArray</em>&nbsp;</td><td>
pointer to vector of data (optional)</td></tr>
</table>
</dl>Put a pointer to a vector pImgArray to retreive a complex matrix.     </td>
  </tr>
</table>
<a name="z7_6" doxytag="CMatlabEngine::GetString"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> HRESULT CMatlabEngine::GetString </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LPCTSTR&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>szName</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>LPTSTR &amp;&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>szString</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Retreives a string from Matlab.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>szName</em>&nbsp;</td><td>
name of the string in matlab </td></tr>
<tr><td valign=top><em>szString</em>&nbsp;</td><td>
NULL pointer of type LPTSTR</td></tr>
</table>
</dl>szString is allocated on the heap and must be cleaned by the user.
<p>
<dl compact><dt><b>Warning: </b></dt><dd>
Supported for Matlab &gt;= 6 </dl>    </td>
  </tr>
</table>
<a name="z5_0" doxytag="CMatlabEngine::IsVisible"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool CMatlabEngine::IsVisible </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
returns true if matlab is visible
<p>
<dl compact><dt><b>Warning: </b></dt><dd>
Supported for Matlab &gt;= 6 </dl>    </td>
  </tr>
</table>
<a name="z7_3" doxytag="CMatlabEngine::PutMatrix"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> HRESULT CMatlabEngine::PutMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LPCTSTR&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>szName</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const std::vector&lt; double &gt; &amp;&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vRealArray</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const std::vector&lt; double &gt; &amp;&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vImgArray</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>UINT&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nRows</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>UINT&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nCols</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Add a complexmatrix to matlab workspace.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>szName</em>&nbsp;</td><td>
name of the variable in matlab  </td></tr>
<tr><td valign=top><em>vRealArray</em>&nbsp;</td><td>
vector of data (real part), filled line by lines </td></tr>
<tr><td valign=top><em>vImgArray</em>&nbsp;</td><td>
vector of data (real part), filled line by lines </td></tr>
<tr><td valign=top><em>nRows</em>&nbsp;</td><td>
number of rows in array </td></tr>
<tr><td valign=top><em>nCols</em>&nbsp;</td><td>
number of columns in array</td></tr>
</table>
</dl>If nRows * nCols is greater than the size of vArray, nothing is done.     </td>
  </tr>
</table>
<a name="z7_2" doxytag="CMatlabEngine::PutMatrix"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> HRESULT CMatlabEngine::PutMatrix </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LPCTSTR&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>szName</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const std::vector&lt; double &gt; &amp;&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>vArray</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>UINT&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nRows</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>UINT&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nCols</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Add a matrix to matlab workspace.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>szName</em>&nbsp;</td><td>
name of the variable in matlab  </td></tr>
<tr><td valign=top><em>vArray</em>&nbsp;</td><td>
vector of data, filled line by lines </td></tr>
<tr><td valign=top><em>nRows</em>&nbsp;</td><td>
number of rows in array </td></tr>
<tr><td valign=top><em>nCols</em>&nbsp;</td><td>
number of columns in array</td></tr>
</table>
</dl>If nRows * nCols is greater than the size of vArray, nothing is done.
<p>
Here's an example of use: plotting a 2 columns vector <div class="fragment"><pre>        <a class="code" href="classCMatlabEngine.html">CMatlabEngine</a> mt;
        ...
        vector&lt;double&gt; v(200);
        ... <span class="comment">// v[i] =... etc</span>
        mt.<a class="code" href="classCMatlabEngine.html#z7_2">PutMatrix</a>(_T(<span class="stringliteral">"v"</span>), v, 100, 2);
        mt.<a class="code" href="classCMatlabEngine.html#z7_0">Execute</a>(_T(<span class="stringliteral">"plot(v)"</span>));
</pre></div>     </td>
  </tr>
</table>
<a name="z7_5" doxytag="CMatlabEngine::PutString"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> HRESULT CMatlabEngine::PutString </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LPCTSTR&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>szName</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>LPCTSTR&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>szString</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Adds a string to matlab.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>szName</em>&nbsp;</td><td>
name of the string in matlab </td></tr>
<tr><td valign=top><em>szString</em>&nbsp;</td><td>
string</td></tr>
</table>
</dl><dl compact><dt><b>Warning: </b></dt><dd>
Supported for Matlab &gt;= 6 </dl>    </td>
  </tr>
</table>
<a name="z5_1" doxytag="CMatlabEngine::Show"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> HRESULT CMatlabEngine::Show </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">bool&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>bShow</em> = true          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
show / hide matlab console
<p>
<dl compact><dt><b>Warning: </b></dt><dd>
Supported for Matlab &gt;= 6 </dl>    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="MatlabEngine_8h-source.html">MatlabEngine.h</a></ul>
<hr><address style="align: right;"><small>Generated on Wed Oct 9 11:24:15 2002 for MatlabEngine by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Engineer
United States United States
Jonathan de Halleux is Civil Engineer in Applied Mathematics. He finished his PhD in 2004 in the rainy country of Belgium. After 2 years in the Common Language Runtime (i.e. .net), he is now working at Microsoft Research on Pex (http://research.microsoft.com/pex).

Comments and Discussions