how can set values to a const mxArray ?
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi all, Suppose defined a const mxArray *ptr[2]. I wanna set *ptr[0] to a string such as 'mystr', and set *ptr[1] to a int varible such as 10. how can I do it? for example help me to modify this code:
const mxArray *prhs[2]; char a = 'mystr'; prhs[0] = a; prhs[1] = 10;
0 comentarios
Respuesta aceptada
José-Luis
el 6 de Mayo de 2013
Editada: José-Luis
el 6 de Mayo de 2013
Looks like you are talking about C/C++ code. If that is the case, I am confused. How could:
char a = 'mystr'
ever work? That should not work for one of two reasons: either a should be a pointer to a character array or mystr a single character.
That being said, there are some other issues with your code. You declare prhs to be a pointer to a const mxArray. Then you try to assign values to prh, something that you have never declared. Finally you are trying to assign a character and a numeric value to prh, which is a pointer to an mxArray. That's a no-no.
Anyway, knowing what errors you get and what you are actually trying to do would greatly facilitate the task of those trying to help you.
3 comentarios
José-Luis
el 6 de Mayo de 2013
Editada: José-Luis
el 6 de Mayo de 2013
You could use functions from the Matlab C++/Fortran API. Please look here and examples therein. For what you want to do, you should look in particular at:
doc mxCreateString
doc mxCreateDoubleScalar
I will not give you a working example because that would be doing the work for you, and this sounds a lot like homework. I, and others, will be more than happy to help you if you run into specific problems. For such a simple application however, you can pretty much copy/paste from some of the examples provided by the Mathworks.
Más respuestas (3)
Jan
el 6 de Mayo de 2013
Editada: Jan
el 6 de Mayo de 2013
mxArray *prhs[2] is a field of pointers to mxArrays. The elements must be pointers to mxArrays then, not a pointer to a string or even an integer value directly.
Even char a='mystr' will fail, because a must be a pointer to a char, when it should carry a string in C.
I assumed there is a confusion with the names prhs and prh.
These are such fundamental problems concerning C that I do not think, that a solution will really help. You have to understand the bascic of C at first, befaore you can use it securely. And afterwards you can include the functionality of Matlab arrays. Read the C-Mex examples shipped with Matlab carefully to learn more details.
4 comentarios
James Tursa
el 6 de Mayo de 2013
Editada: James Tursa
el 6 de Mayo de 2013
@omid jab: Here is the code. However, I am of the same opinion as Jan that these two lines may solve your stated problem in this post, but it is likely that they in and of themselves will not solve your overall problem, and that you likely need to learn C and go though the mex examples in the doc to know how to use these lines.
prhs[0] = mxCreateString("mystr");
prhs[1] = mxCreateDoubleScalar(10);
Azzi Abdelmalek
el 6 de Mayo de 2013
Editada: Azzi Abdelmalek
el 6 de Mayo de 2013
prh{1}='mystr' % Matlab does not allow 0 as index (it must be logical or positive integer)
prh{2}=10
2 comentarios
Ver también
Categorías
Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!