Выполнение C-программы из Matlab - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужно выполнить программу на C через Matlab, и я использую функцию system() для этой цели. Однако C-программа вычисляет число с плавающей точкой и возвращает его в виде строки, которую я сохраняю в переменной Matlab. Затем я преобразовать его в удвоение с помощью функции str2double(), но это не всегда работает. Иногда str2double() возвращает NaN, хотя я получаю правильную строку из программы на Си. Я прилагаю код, который я написал в Matlab ( v и a - это векторы той же длины, которые были вычислены ранее):

for i=1:length(v)
    fun = './compute_power';
    arg1 = ' 0';
    arg2 = num2str(v(i));
    arg3 = num2str(a(i));
    arg4 = ' 250';

    execution_path = strcat(fun, arg1, {' '}, arg2, {' '}, arg3, arg4);
    execution_path = char(execution_path);

    [status, result] = system(execution_path);

    power(i) = str2double(result);
end

Я не могу понять ошибку, потому что иногда она работает хорошо, а иногда нет. Есть ли другой способ получить тот же результат без использования str2double()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...