Compiled standalone matlab executable fails at math; what am I doing wrong?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Tino de Bruijn
el 1 de Mzo. de 2015
Respondida: Tino de Bruijn
el 2 de Mzo. de 2015
Given file test.m:
function test( a, b )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
a
b
x = a + b;
x
fileID = fopen('test.out', 'w');
fprintf(fileID, 'x=%d', x);
fprintf('%s', 'test.out');
end
compiled with: mcc -m -R nodisplay test.m -d out/
I would expect: out/test.app/Contents/MacOS/test 1 1
To give me 2, both in test.out and on the console. It however returns:
a =
1
b =
1
x =
98
test.out
And test.out contains: x=98
I am flabbergasted... Within matlab everything works as expected. What changes during compile? And how do I fix this
0 comentarios
Respuesta aceptada
Andrew Schenk
el 1 de Mzo. de 2015
When you use the MATLAB Compiler, the input argument type will strings.
Loren talks a little more about this here http://blogs.mathworks.com/loren/2010/12/21/strings-and-numbers-as-arguments/
When the function displays a and b, it displays the string. However when the addition is preformed, MATLAB dynamically converts the strings into numbers, but using their ASCII value. The character 1 has an ASCII value of 49. Thus 49+49 = 98.
What you should do instead is add the following to the top of your function:
a = str2num(a);
b = str2num(b);
0 comentarios
Más respuestas (1)
Ver también
Categorías
Más información sobre MATLAB Compiler 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!