Borrar filtros
Borrar filtros

Compiled standalone matlab executable fails at math; what am I doing wrong?

1 visualización (últimos 30 días)
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

Respuesta aceptada

Andrew Schenk
Andrew Schenk el 1 de Mzo. de 2015
When you use the MATLAB Compiler, the input argument type will strings.
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);

Más respuestas (1)

Tino de Bruijn
Tino de Bruijn el 2 de Mzo. de 2015
Ah, I did read that somewhere. And I also figured 98 was probably a 'b', but it was too late to make the connection though...
Thanks!

Categorías

Más información sobre Introduction to Installation and Licensing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by