Мне нужно выполнить программу на 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()
?