Compiled standalone matlab executable fails at math; what am I doing wrong?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Tino de Bruijn
le 1 Mar 2015
Réponse apportée : Tino de Bruijn
le 2 Mar 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 commentaires
Réponse acceptée
Andrew Schenk
le 1 Mar 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 commentaires
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Introduction to Installation and Licensing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!