Beispiel #1
0
double
MatlabEngine::GetScalar( const string& inExp )
{
    DoubleMatrix result = GetMatrix( inExp );
    if( result.empty() || result[ 0 ].empty() )
    {
        bcierr << "Could not get scalar value \"" << inExp << "\"" << endl;
        result.resize( 1, vector<double>( 1 ) );
    }
    return result[ 0 ][ 0 ];
}
Beispiel #2
0
bool
MatlabEngine::PutMatrix( const string& inExp, const DoubleMatrix& inValue )
{
    int sizeDim2 = inValue.empty() ? 0 : inValue[ 0 ].size();
    mxArray* val = mxCreateNumericMatrix( inValue.size(), sizeDim2, mxDOUBLE_CLASS, mxREAL );
    double* data = mxGetPr( val );
    if( data )
    {
        int indices[] = { 0, 0 };
        for( size_t i = 0; i < inValue.size(); ++i )
        {
            indices[ 0 ] = i;
            for( size_t j = 0; j < inValue[ i ].size(); ++j )
            {
                indices[ 1 ] = j;
                data[ mxCalcSingleSubscript( val, 2, indices ) ] = inValue[ i ][ j ];
            }
        }
    }
    bool success = PutMxArray( inExp, val );
    mxDestroyArray( val );
    return success;
}
bool
MatlabEngine::PutMatrix( const string& inExp, const DoubleMatrix& inValue )
{
  mwSize sizeDim2 = static_cast<mwSize>( inValue.empty() ? 0 : inValue[ 0 ].size() );
  mxArray* val = mxCreateNumericMatrix_( static_cast<mwSize>( inValue.size() ), sizeDim2, mxDOUBLE_CLASS, mxREAL );
  double* data = mxGetPr_( val );
  if( data )
  {
    mwIndex indices[] = { 0, 0 };
    for( mwIndex i = 0; i < static_cast<mwIndex>( inValue.size() ); ++i )
    {
      indices[ 0 ] = i;
      for( mwIndex j = 0; j < static_cast<mwIndex>( inValue[ i ].size() ); ++j )
      {
        indices[ 1 ] = j;
        data[ mxCalcSingleSubscript_( val, 2, indices ) ] = inValue[ i ][ j ];
      }
    }
  }
  bool success = PutMxArray( inExp, val );
  mxDestroyArray_( val );
  return success;
}