mexPrintf to standard error

6 vues (au cours des 30 derniers jours)
Jim Hokanson
Jim Hokanson le 5 Déc 2016
Commenté : Jim Hokanson le 6 Déc 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 commentaires
James Tursa
James Tursa le 6 Déc 2016
Do you mean dynamically redirect all mexPrintf output at runtime? I.e., used to go to screen but now goes to standard error?
Jim Hokanson
Jim Hokanson le 6 Déc 2016
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.

Connectez-vous pour commenter.

Réponse acceptée

James Tursa
James Tursa le 6 Déc 2016
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 commentaire
Jim Hokanson
Jim Hokanson le 6 Déc 2016
:) Ha, why not.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Write C Functions Callable from MATLAB (MEX Files) dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by