MATLAB Answers

0

mexPrintf to standard error

Asked by Jim Hokanson on 5 Dec 2016
Latest activity Commented on by Jim Hokanson on 6 Dec 2016
Is it possible to direct the output of mexPrintf to standard error? I'd like something like in Matlab where you can do fprintf(2,...) to print out error code.

  2 Comments

James Tursa
on 6 Dec 2016
Do you mean dynamically redirect all mexPrintf output at runtime? I.e., used to go to screen but now goes to standard error?
I am looking for a command that works like fprintf(2,...) (Matlab) but for mex. Something that prints to the Matlab command window, but in red, rather than in black.

Sign in to comment.

Tags

1 Answer

Answer by James Tursa
on 6 Dec 2016
 Accepted Answer

Brute force? I can't think of another way to get at the MATLAB standard error printing. E.g.,
/* Includes ----------------------------------------------------------- */
#include "mex.h"
#include <stdio.h>
/* Global variables --------------------------------------------------- */
char s[2000];
mxArray *rhs[2];
/* Functions ---------------------------------------------------------- */
void mexPrintf2(char *s)
{
rhs[1] = mxCreateString(s);
mexCallMATLAB(0,NULL,2,rhs,"fprintf");
mxDestroyArray(rhs[1]);
}
/* Gateway ------------------------------------------------------------ */
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
rhs[0] = mxCreateDoubleScalar(2.0);
sprintf(s,"This is a test\nThis is only a test\nIn an actual emergency ...\n");
mexPrintf2(s);
sprintf(s,"The number %d + %d = %d\n",1,2,1+2);
mexPrintf2(s);
mxDestroyArray(rhs[0]);
}

  1 Comment

:) Ha, why not.

Sign in to comment.